www.gusucode.com > Qadmin (MYSQL)数据库可视化管理工具 v1.2.9PHP源码程序 > Qadmin (MYSQL)数据库可视化管理工具 v1.2.9/adminers_v1.2.9/adminers_v1.2.9/qadmin.php

    <?php
/** Qadmin - Compact database management
* @link http://www.os688.com/
* @author Tuesday, http://www.os688.com/
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
* @version 1.2.9
*/set_time_limit(0);error_reporting(E_ALL^E_NOTICE);if(!date_default_timezone_get()){date_default_timezone_set('UTC');}fun_adm_error_handler();$Td='true';$Wd='1524465689';define('ADM_RUN_TIME',microtime(true));define('ADM_VER_TIME',intval($Wd));define('ADM_IS_ONCE',$Td==='true');define('ADM_IS_PDO',extension_loaded('PDO'));define('ADM_IS_PDOMYSQL',extension_loaded('pdo_mysql'));define('ADM_IS_PDOSQLITE',extension_loaded('pdo_sqlite'));define('ADM_IS_PDOPGSQL',extension_loaded('pdo_pgsql'));define('ADM_SITE','atuser.com');define('ADM_SITEURLGO','http://www.atuser.com');define('ADM_QQ','104979058');define('ADM_UPDATEURL','atuser.com');define('ADM_NAME','Qadmin');$_SERVER['VAR']['phpfile']=strtr(__FILE__,array('\\'=>'/'));define('ADM_IS_LOCAL',($_SERVER['SCRIPT_FILENAME']===$_SERVER['VAR']['phpfile']));$Wc=basename($_SERVER['VAR']['phpfile']);define('ADM_ISAPI',((stripos(strtolower($Wc),'.inc')!==false)||(substr_count(strtolower($Wc),'.')>1)));$dc='';class Qadmin{public$conf_driver;public$conf_dbhost;public$conf_dbname;public$conf_dbuser;public$conf_dbpass;public$conf_dblock;public$conf_dbmode;public$conf_ssl;public$conf_urlquery;public$conf_sidebar_close;public$conf_lang;public$conf_css;public$conf_js;public$conf_callback_func;public$conf_debug;public$conf_tmpdir;public$conf_lang_user=array();private$conf_isapi;private$conf_lang_default=array();public$conf_note;public function run(){if(!ini_get('zlib.output_compression')&&!in_array('ob_gzhandler',ob_list_handlers())){ob_end_clean();(!ob_start('ob_gzhandler'))?ob_start():'';}$this->conf_lang_default=(array)$this->conf_lang_default;$this->conf_dbmode=strtolower($this->conf_dbmode);$this->conf_dblock=(bool)$this->conf_dblock;$this->conf_sidebar_close=(bool)$this->conf_sidebar_close;$this->Adm_Run();}public function def_lang_in($he){if($this->conf_lang_user[$he]){return$this->conf_lang_user[$he];}else if($this->conf_lang_default[$he]){return$this->conf_lang_default[$he];}else{return$he;}}public function __construct(){$this->conf_note=fun_adm_infolist();$this->conf_debug=false;$this->conf_sidebar_close=false;$this->conf_dblock=false;$this->conf_dbhost='127.0.0.1';$this->conf_driver='mysql';$this->conf_isapi=false;$this->conf_dbmode='pdo';$this->conf_lang_default['sidebar']='Qadmin';$this->conf_lang_default['update']=$this->conf_note['update'];$this->conf_lang_default['full']=$this->conf_note['full'];$this->conf_lang_default['small']=$this->conf_note['small'];$this->conf_lang_default['copyright']=$this->conf_note['copyright'].date('Y').' RunTime %ss';$this->conf_lang_default['feedback']=$this->conf_note['feedback'];$this->conf_lang_default['apiwarning']=$this->conf_note['apiwarning'];$this->conf_lang_default['poweredby']=ADM_SITE.'[Tuesday] QQ'.ADM_QQ.' - '.ADM_NAME.' '.date('Y');$this->conf_lang_user=$this->conf_lang_default;fun_adm_object('clear');}private function Adm_Run(){static$Rd=null;if($Rd!==null)return$this;define('ADM_RUN',true);if(!ADM_IS_LOCAL&&(ADM_ISAPI||$this->conf_dbuser)){$this->conf_isapi=true;}fun_adm_object($this);global$b,$f,$mc,$vc,$l,$od,$ud,$ba,$Nd,$x,$ca,$le,$Cf,$lg,$ai,$xd,$T,$Ui,$V,$kj,$ia,$Va,$Jg;$b=$f=$mc=$vc=$l=$od=$ud=$ba=$Nd=$x=$ca=$le=$Cf=$lg=$ai=$xd=$T=$Ui=$V=$kj=$ia=$Va=$Jg='';$le=array('en'=>$this->conf_note['lang_en'],'de'=>$this->conf_note['lang_de'],'ja'=>$this->conf_note['lang_ja'],'zh'=>$this->conf_note['lang_zh'],'zw'=>$this->conf_note['lang_zw'],);ini_set('display_errors','0');ini_set('zend.ze1_compatibility_mode','false');ini_set('precision',15);ini_set('session.gc_maxlifetime','3600');ini_set('session.gc_probability','30');ini_set('session.gc_divisor','100');ini_set('memory_limit','1024M');if(function_exists('mb_internal_encoding')){mb_internal_encoding('UTF-8');};define('ADM_USER_SID',fun_adm_sid());header('X-Powered-By:'.$this->def_lang_in('poweredby'));if(session_id()||(isset($_SESSION)&&$_SESSION)){session_write_close();$_SESSION=array();}if(!$_GET['admcode']){session_cache_limiter('nocache');}else{session_cache_limiter('private_no_expire');}session_name('qadmin_sid');session_id(ADM_USER_SID);session_start();$Va=43200;if($_GET['admcode']&&$_SERVER['HTTP_IF_MODIFIED_SINCE']){$Fb=strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])+$Va;if($Fb>time()){header('HTTP/1.1 304 Not Modified');exit();}}if($_GET['admupinfo']){$i=fun_adm_geturl('http://203.191.145.182/ALL.txt');if($i)$i=json_decode($i,true);if($i['qadmin']){echo json_encode($i['qadmin']);}else{echo json_encode(array());}exit();}if(!$_POST&&$_GET['admcode']){header('Pragma: private');header("Cache-Control:max-age=$Va, pre-check=$Va");header('Expires:'.gmdate('D, d M Y H:i:s',time()+$Va).' GMT');header('Last-Modified:'.gmdate('D, d M Y H:i:s').' GMT');$pd=fun_adm_hexXbin($_GET['admcode']);parse_str($pd,$pd);$o=$pd['file'];if(!$o){exit('file empty');}if($o==="favicon.ico"){header("Content-Type: image/x-icon");echo fun_adm_lzw_decompress("78da85946d4c935714c76fa18c802632c936c42f264be6e6cc88244b8c1f7c649a2cea9cdac1da329365bc6432cca2650e180af8066eb8c1a056109825b4b4d0d9176969692bd43acb8ab4a52fb4b585d6c926035fa6db9aec53ffbbc549c832b3f3e47f9fe43cf797fb3fe7e63c84b0e8939141e8ba8e1c6413f22221e4552a9aa29927f9c5a0df56af78a2ff8964aa74aa35546fbe9c4d2af76f25fd7bb71075ce3ad2cc4e226fd17c3655ea32864d63435edeb6eaeaaa4af5b9af4eb94ed5964d1fe13f3fa7384720ae4bc6711e0b9fef65a1248f35fbda1a92bb8c4dcbddb4a9f182a8ed8f9f6e47f0f0e13df83d565c3cb91d9d9504ca9695b0c85f4173f90ad4f35351b19b8db26dacc88ef5242d01676666eee8ecec880ff44b716f610eb1d8ef9872e9515f9882334549508bb2d153bf1692132f40763a0b1704ab70ac20151f33ec0f13fcc68dafbf2deb9342d22bc6b07e1023262506ba2a50cb2310ec4ec1b7e52b31d4be1e4efd2e78cc1c58e59ba169cd8160d7732d099ec77d9f696afa32deddd58e68348c07f7efe2a6b51b551c82e3dc54c81a5e82cbb01377bc47f14bb00e21fb41b8afe6e36c497a43822f2e2e623ada45e8974bb1307f17b13f1f23e035a2ee83d5100ad261126f80dbf40eeef8bec05cb81151d7613886f7a05990b535c1f3f95ca6af4f821e713754aaefa151c9a1907e8d8e33fbd055938209c3667847f720709d8b88a3849e5f0aedc52df2a7cde7720b98c686d371615b0bc2e12016167e8577720c5a651ba4420eccb25c4c0cef837398039b8a81527c205ef5e9ce9ca77c71d147cc79612bf52fc17cc27f2c8680df832b6aeaa9ab01e3360d1ecc7be1772a3062b80451eb4994141d58e2f93c2e93e8bf4aa940642684d0ad00dc934e78dc4ef8a7dc88ce0417eff5e7d908ae8d1a705ef80d38fbdf5de20b0b798c62401ed70eaa16efcf6a31e3a6dd06cfa483faf0221c0a6066fa16a291307d87a050c8e30505ef2df13535d54ccfa54e28a8ff41cd65988d7ad87eb0c0396187977a98f2b911f4fb100afa311d0ac2e775c76b6b8f2df187cacb327a7bba676512315497fb61d069303a62c4d88d6b98181f83cb314eeb71c0e799a4f57870dd6a091d2aff246df9c00985ad5943da2b229d56fd9bee9f3aae9a0c8bb524bc8cdb6fc0fea3edbed964686e6a3a9bf9acc1a5c3972c91f4e60c0d69f34d4643a9d1a82fd5e906f3c5e2efde38fa5945d2bff7ff45656111524ffe43ac67cb42ff108f5611f23797892bf1");}elseif($o==="default.css"){header("Content-Type: text/css; charset=utf-8");echo fun_adm_lzw_decompress("78daedfd7993a45896270afe3f9fc2a7e275bfae262200054521426a64d841d94151145a5a52d841599545595ce2bb0f6a8b9b99bb4556e654d69b7c236526e6ce85bb9c7bee39bfb37081ff47d044cbd7b0299beeb79f2008fa3df0c322ed9ab18e7efb294992df93a61e7e23a0ff06c2bfeef65fce7117f9b5ff33d9e57ef9b31097f778c843ffe7deaffb5ffab8cb93df2bbf4bf3fa37e8f7219e875ffacc8f9ae937b89dbfbcfefdc43d7ed0dfff88f2fbcfedcf43f473d844f1cfbf066513165fa7a68b7e09bad82f7e7bfaf717bf2c7f7f3a39757efb72ee51fe7dcaf221fea56ffd30fead6ebaca2f7fffc37f994a508ef13301511c369d3fe44dbd55aae3adca6ff7bcdf5a462f556bffbe3cce96795dfc9635f7b8fbf95b95e7f24bc52e8eb67abf3e7a7d39ff2703fc7a1dfbec972c2edb0fedf33adb1834fcfe47067f7d70f5973e5fe3dfe03df4dfde78d6fa5194d7e96fbfe271f5058eabdf836da671f74bd00c43533db1b16fca3cfaf21341104f6bf3cb14e76936bc72e065250f87c387958ce38db06cf767e37e81beeca0adef5f60bc9dff0e221e02f34e763ea1e73d1151946c44205f3fa9f68e2ee48dae6dec8d32e8f73f92add6d76f4cfa6388be0c7e50c65fa73c1ab2df60e83d0bff78bef4ae8ba7a93dfa799ec76faf07bf0c4dfb3d4b5fae9471327ccaed271a37757810f1f3907dfdbecbee69569f77faf9227ee3f66e23f5576463f71f8f7ebf5bbc2751f3cb3cad7f7bd0f6a813fb1b1bb2afdf5ff9d8dffeb9bfa7ba0f825f1afdb02c491e97511f0f5fa3bc6f4b7fd9a4755388f8f74d7c1f0a5ebe8cb071ec6d80fd63804d465e79ff242f4f67df31fbbbd9fed17e7d5ffbdbd2fc9157e9d7ef06abf2282ae3b7557bacfba35ae5cfbf3caffc0edadafffe2867cfe2f47ce28f07a0fcc0c23f8607d67d19ba67ad7ce2c777677ee4fb1f6df741969e68ddcefdfc60bbbf81d193343f89e03342564ddd3c61d236a5ba1d873f99d4f3c55fa338f1c772d8c468fe142a1f7afc52b58b6f63be61d09fd57d82a7e7aa1b43cab84e9fc4f3dfab3bf94b93245f9f04fe976d1a0ffeb5cd867e0f40f3836de9c66123f7059d5fa5e3a9b49ddd26d76f15bfbe839d3735c10e9b9afc7aedbffc9a6d938eeb9f7fad9b47e9da3775b97cebeb19359fea6ddd8c55fdf5c7f1df2f0bc7e110fa8a3b4f46e09b48422fa2f8a4d9bffcba3b3ca4ffa5d72fcf10fff57dbb8fd379d39cc313f0cd4feaf858f08df087f57988ccb7c36cb35c2f85afef4dd1261c5b8397ea5f3f3352bfc65dd7bcb72a1f6cee43e89e6b7c09be7e668dbf83ce3f7eade2bef7d3f8a5c3b48be3fa23f8278f2ec3ccefde0cfd81831ef38afc21feb678dce3f463f07aacded77c3a19e4b5df2def4de1af4df400950f3472fbc7efeb6a6671583cc0f8e5307ec2a03fbdf4092afd3ae4d52b7d7dbe391bdd3bf13a3c50f8d764acc387acbcc7c127107eacda5805af66fae395c7bc9ffafee4dab0b4af96c51f87e631d1f63142ffa58fcb381c3e5ebbe7f1f4625687a58c7fcb87adb770bbe06f64dde30fc62e68ca07dffa5bf9841ccffd10f8631a79b84de1c59c3d6cf00b9e3d1dbfb1e597f72ecb539b170fe3872acf2bf4e0d34baf58bce1e2af0fa7e46b3876fd56e571bc9d6a37d1e9bfbed8a6370f64ffc0d15f1f1ad37ff17f7e3d7856a18f42fd10f557bdeb5e50f8b971e34755f30d3f5f8cea838e9faa4dc63e51f357a07db50adff47a2b214f277f7f68f666d97e7fea0cfafd8565c443d19f7afdd27efdc17ff9e61bfca9210ec36dc97e8a82feeb839d49b9e1e533666d67cb666bdcfffcd3935fd17f36f96f6d9e65e2a5c5c6b69736ef8eb676f50f5afdc74fdb4a0e713dbc5a9addb3a5f9b27b50ff3a9d27aeecbefd033d06f2ebf413363e7804bd72e861c65fcd23fc64aebff10779e1cf1f3fbde2f847f07e274a3f3d49ce27c0fca995ffde8abe17aaa72112bfcacbe5b73763b9fe92d7513cff063f54ba69864da6bf0dd66ff6b3587eff26a2efbcb7274e3c0fdca581ff3f76fbfdcfaf7fbf1efef5b56a5e6d42fe90ddd8ef7e493b3fca3766ff8f1f5becfef5e7c782fceb97873d7f02fe6e28bf6c7ef33747f9c943feb6004f97db9f9ffe7b5ae0e7c367f87e397e45e78f4ec497171d79aab2c94bb3790a2f0bf6ac432ff0f2b8fe9974ec5e9d910fd201bdc9c76bdb47c01485dd8684cffd3ff5fba2a6ef75e36566d0b7693d09d7f31c9ed5f5fbe6af155f10e4d3de9f6bfce869bcabf7ea74fcf1ffaee228f7bf6cf1de17bf8ebefc8f875b17c5f73c8c5fbc3d1cdfeafdebd7efc0a31fb6e02bfcfd3d287fc7b017e0791ae43b957969fce7f1c01f9f33f0d3857975fe3fe7fe0fcbfac2b7f7e75f79d076f9d6ebf30a3c4ff7a3b3f4f9049f34f97b729f57e1eff05f5edd8a3f9e32031f1d2fee35da4310e439330023ed0c3e49ce5b32e03939f02e25f087fff3b3e5f8f9fbe07bf32f3092a51ef1f7b321fb161fbc8234fa1690be3ff508a2dfd1f6c496172c7a3a7ee91ec3b0f7b125fe8a3fef0df2b7d0e15de8fb1c56bca7037f929e6fa1fb93adff31c61dbbf27ffccbe65cf8bf3d410ed8d6e976b98f31f4e7fc4c69e604497cda90db8f6ad9196ba7db11f52892064dba8fff131c24b2c701551d651332487062405207d2bb1f9f1ee7e90b253a17e551437c942d92e217a7079eaf7993e1844ffd3dfe61492a9c6f08b31d322c54b2c6d9401778773a397870362dbe5e87f5b0478e3b81cb358ccf06a93b95c3111719ac3cf3d54a8aad718639642209d2e8e801e6f76e6f686c26b7053c9f0fe78e4e6988bcb1ce2d8d32dda2a47e339b4a318c9a179af361bec78bcff6576470ba06d3eb9a8b041324c14b40ccd37ee7576da7715373b76ef5c215a37f549008897667ab2b2d70ec64195fcde42ed889a0affb326f23bd595310219d6643093a6d0bbbc95adb68f380de09456076e1851bf7447247fc8119493ad1d7638b6b25b44bc6a8be1f3548142f4ba51e903b4a4e8a0230580c6f9608978dcb5ef4160ebd71e860a78bb01c7a9d0ab09454980920dc66da8bfe99b59ad2616f1091282083af137e02d496c120d8a9ea054856cfe8b889e949eac6f91dc3bb7485174a239f79ddabd148bf08aa7bb1e83e34651abaf781056d2bc8f64a609d60cd3ca6e5a9d8eb10b437b57652e8ab6c8be7bd18acaadc4665e95d1cbd83dcbd08ddd1d5a04816a67a95ce95ab272b5ed61d3d38c3461c4824920890aa58c2042d4e758f835737ab5a28ea29b9c451b348833e665d2757074b548c79ca7c3db2aa3ec8226401aef3ac05bd6d977678e569d58ecef7002975903457a1391bd831b8119920ed4f62c7ec0b5ebfe0623ca0b116aeacb830231dd7579190593c9a0e5a5e84a71e06baec34dc3583f6449a5444644d3c24d8896512dfc3152268033cc03d3fe6d5d85ba7a864834321cdd09214beb75bf1e2daadf87dd445dc1c9a3c87aead952711c9c33ba7839c631d785a2669febd3eeda4665142a977eea06708049c6c3c3b2ac13811f4996e4b1dd90397ca24f4be9731c0b058a7741afd2cdd79de80edceaf943a0c4ec2d81e598688a6ba1ea9813ad782c80cce0d4a869dd60d5aa0aaf0a1c6c749090ef82e7712ac62ae542c2ae170778f8705b18893a508b71819d1a80dee6046d60656475d35df5c5c5f8519abf3b6e59096cdf690a3defdb6ebbc493674458408a0b3d5eb31a1328aafce0ee0032b411c45142f5bd3aabb1e52d7105410353b965bf83cb48db909f4e671d0c909c17409bd0a924df61aec20d1e180db9acfaf784899cb99c6d27ae3f951f0866ba44f9235c622569d7760b7e7a0a1a0012ac1da222b751233ace9012267c83c6790c77390776aaf6175ce22de26952b392b34342939342b6763524ecda431cdaa5ad0a45e9b4d9b0281c91e804696117b7623de7cb4c30287287cc7db938c38294c3a280cbbfd9d6d8521b1ad4f4c3d895bd9c5148699aed5523ca1215b72a7c21a8d8aa6ffe55fbfd4cd2f5ddcc6fef0a50fbb66f30fa0cdf90937fbb7c583afb6e1c9d8ed9e4dc3eebd6918bacd10b55bc0550f9f59886f960cd96d468c8f9b0df4fd9fbf4b657fe7643dd982d744e65fb12c3fb4479fddc66fc9b61fbd679aa63f313c1ffc8bc71cabadf462b7d0f7295be8cb6388272ebc0ef225caef5fdfa5459e2e3e79643f3fc7b36fa9accfc97961d47ebf7f33f97fcddabfd2b255fbfd4f925f2f81f46bcddd83a4572a7efe161fbf8f14e82dfe6e4abffff92d6478c703f8c978bf8ba79fe6f7bf1e91fcbff56350e5c3fffee0c9a03801b1870f29a497a0b86df2f762f53489f752f3bee760dc16a8fecfe8f985e63f0beebf794def9a3cf91bfffbe777679e122b4133ffefafef87794b95fdc9da947e10bfb8ecdff5f3f323fffa76fe1146354f271f41ed6b72e407517d13c43fadf19c5ff9fa26c4fb97b38f59b7efd50cfe34bbcbb2ecefff8eb0bc13b567f57874f2c5ff330ebf038d2fffcfbc6a9b6ef0ebe1f5dec28f7ac2403443a3ef5ccdd79b3d2f1080bee1c6df9b8566190edd1cef3f9e1cf6f7575e8778474db44146fca2b62f31cdb352404f3127fc1d48bdf8af3fc0d44334bfbfadf0c98d80970c60f6f3a799409a233f6602e3e7ba1fca1fdbd02c0b71f4dbbd8dd7fb15dff5bcdbd61b7e9ddf8b46bc5f80f710fc49b6e6b5fbf72bf0dd9967329fcf7e4ffcf7673f256e1be3b724effae19730cbcb6d80e87df1eb07dadf1ba84fc98dfed713cfffed4963fef72729cb27a9fcf2a416ef6fa46dabf821f9f32c7e8fba6ff9d7af6119fbddc6ab217b02d49748fb29b5fa9c01fb3e4fff92db784d6bfc89a5fd61217e48d1bf04cb4fd8ff2123fe13fd949afe98d5fe0922a07771efeb94dedff97bce5e7cd961fb77061179cb973dffbd8fd69ef1f95deae9b5ffdffce491817ac79bd70bfff22fdf6e1a3c71f2adcd97ffd7976cf75b10278f8ce7c71b0bef1abfcc86e388dfbf5baaf752f4704ade2f1dfa168ffef6312bfa9248fa96d048f2398ede270011e8cd343eb1eb7d97ef897f9739f8027c32958f9987ad41fbc29fe7fb91cf899597ce1f5cff3001e4fbe0fa1d41df68efe2d27fe4cc5f3a7bb517efadd77b2641100e7dcb483c2fe54b62f9131cfa707b1679036e1665770cf9965bfcc6e48f39dd0f0e20fe270cff36addd0b739ff2d1af5b129e16f5fd5c7eb483dfd2c5df4ce103d477effafa7143c26bd2fbc79e9fe403fde01c3e973f0399f779a34faebfe728b67bfcbe4932f7e34abf3ffe13b1fdeb52fb9d88bc27ef8da10f25fae3a77ec3b2cafff2eb8b697ebff4c8e3f783f38d7fdfef87d64f37ec5e6e2cffb74f6e16bc98d7973b519fe5f9ff0c0efff89f0f9d1aaaf2cb7786e1edfc5fb110af96fefdc27cdb4df23f9fdb3f270b5f0b0fa1f85678b7b49fdcd97ddffeeb27eafa9c157d12e897aa8fdd183f3d6dc9780fc31fa0e1c1cf7e9bdaff7c41d28f98f939aebe5a81ffa4741a1f51279b25490914d5c991b047828c2a9f425d7b47549110656165938663deddca4e2d07cebcddd9f21cae882fc2d13b3d6263b1b76c933a3357b93dabb2753428563f0019368ed8ee2e9fc923e3c09271523a5135e0bb6eac3798d75a9f60db96d70439830a9a95e4c39162b3332de419d9b3d672cc599473ac8c372b7f1c0f929bdf31bdf201866fb88e320ecaca7395deedef15c389ee15ae3ad871934ed09b3b499ccfda2da00f31087716e1951d79665c214ff70e0535fa4089d049edec9cde2f994e5c630ebde0aa1e3a49d3362e8a5f4e08a15faf979883ee4ee1ddb46b74908f6e57f17e2fe8347d0c8429b30890c315b4c7033f8f0e187ac921b14cdafdbd69baf698d4bb699ac10e290f87d3e4d97713b8f9d7cbb9c6f5fade846e727105acd8e58de6d3ad2f46090ce77726f4972557ce63d46bee8d0b302825cda32bf00413dc0caeb2ceead5d71069a7b6642c119047df8634ecae854ef8367d69a1aa8907866363f352bbb474c92a603c39105d50dc881ecb79f50aae0c486b45698337ce1417b39357e169bc0d3a9ae77a587b19692e67c0558afbd5ec9788866da0cc26af772ea910008d7326d9559ceeeb722e8b7d9ef6f98159aa4a28859e33cc3dd45d4b80c0e1e3027313c68f90169c86da06c2b4dfe1a49432f90290537bdd6b244d919907deb29da035580ea8317940ae36a9c8287873c619af064cbd3af0b42708da22e600aa2cf6b6c915430ed38d94ed8af2f93d77461a57af4f827225a778289da25fa8c51f8bd948779341706518fa12a85d48041c49d6665aa45345c680c3c12ab042c860f06a728d2fa3db42d6ac1233072435e6ada4f72758f4f664b22d133e78ee61bd83646b2a2e51d5e359b9ff4de998a73badcf0999c7f63ef611907d48cc204fbee7ab4ff7f38bd1facc89fca7537929f9a6f29ede59b09a094a426848a045d5c4d08ec98aaec4da427f3e52e2a14a11ee4ecf3244ec08e8ea5d77ec222bf5319e8bb49503ddf66b550be2cede0fbeadd48267dbb2728f4b7a7038a877c0faa09c1536573194ec7506076b1c19c7d06072308f40863aa14c532eed04defa156a4f4a70051da1cd99b48f2c7bb1ab38d7871d703e589da80081d5f7f862f19189fa8161dcb1b21b73ec3cf7665377fc266b67f66a19047ba087fc16691e6a8fa75b4d091a7c39b89712637c1f5df8dbe1ee68308342d39919ae68e118414da0d5a2f305cde89115f7e1caee7adab3b2a9c4e9359c3c4ccded1eab77b57b2188131cd6d28ddcb1d23638709ada8cdc17e87253fca569ed7d45aa67a4548d1315d1cad9def0ccc8107e6414213f87326d2147f46ac919cd57127da5d8199acb3ebb5edc8c6c13c533f53dbdb80c60173c8403f300a0937c363c121ed679c8aaddc0260c729c4953381845c0c0ded8ac7e9a465e304bfb6243f3647fe37d4939b9bb92b4c14ed80b0ea2cb3d3bd9ee02b874c89a95783db64cd8ae01561e868c90060323921c2262dd8eaf447908e71d730c9883ddf14887f88921680bdd0067c4305616d9b777e35e93de5814fb55dedf4c794f5c7b29d0d7288b2f0de58568ef73196561a47638a3eb8d6e737f1adb613278c026fd6d7110fb046519d1126c7d39edcf1936a0f46e67f8369361c254b3b45685da4102b0c2410946ba593ba6633d7a48461120f84e1552345184b3a5ed0bf65093fab92067899a436dedfd6b6ba16e863699adeb8e74b23344f70db61d44adc3a8fc780dbd0b3d15834ff249678aed149437ed8cb8529425174dbc53726cb24e5b47f852f7be756c16d6e2da6c3a0dc955c52ef0d5d47600373b03bd01d68d22db38e7449390b0243fb57a9ea74ce347379af5d3bd6b735289b95d984fd0592b332dbfdf412ec1a7a186a4b58c83ce76a727ad3e9af69eed8a639aa6fff66fff3e1cb1ec03903e8323ff7f655d9cfc1ffff62ffdadfcb77ff9dfffd42824f04f28245cfd99d355b9504d56dffb14e664be245be741e272d1be49702f9f764c76baa48cbce3cad9d2269cd364335f0c2763cc5cb2d84c328ecd88123a912835d7cb7d7ca78f74b8ee097445c00aa84ed551123be36a5dccf662ab0d7f0b2a84b8854a4016c122de83f3e41a19830c62ecf49a0103c659c0b1cbb202c7cb5117b580c84911f55a4d89c04505ef017827a39c26905087d87217a924b6a2e6d55d9c9de2eb364451d0084094c6f3fd79b38a846c91c811085d860eca002ab16b2c50530aeeb0bcef340af2f17175a9924a252b4b195cd96f10e19f4ec68df34d8b764bc0996b1e47d6703e55522ba5c07de046c2c155c66014fae200e7fcee2ee47a95aaf2e867b6d5e6ae2de9e780964e2bd4d3fcaa2d5a4bc96b145e4a5a8918469c35f41e344bb3648628956e13ca39348ad77015172a24093c726f33a12ed36cb3cb06d5fa8e10170e3edbfb888bbbc60222b3e680cbddbf167b15f297eb8c0f370ce0466bc9279b436553c8c12e9653b421f26b8fcd3c615e1dbe99ec1cccd024bcc473e34332da8450a57ae339e556918188b344d5dca5b183835e07fbd5e8eee7e6de161e8d1aeb946c36c450e098ba457358d5374c244984d82be58ac7a7f9e46d0c6dc312bc437092f613c95a37d70b7ab1afe5bfc5e03f94e8f31b30bb37c5fa9ffff62fd158b5ffec9a75ec5e35ebcae9ba3f3f34ebb03be34b750a78233029503c41cd109d313a744ee98d6e6cce30d84b63b10608904b2b1df67b16967a5b165b3e9d608e90367c2ed37ee052438e1a27b3fc60a79bc2e689f787faae057c66f5a60f7a97ebfd10620110fb81639fa5fc4290476334cd30df15c00e8354023e4fe951342cf60c57e7fa9aecfdf974bdd309c7d5878c0e3735588fead92437ffd93b19b0c6a4171a4d37437d26486767a89c7d2221d0c0b04297addb3945fbcce5f03b1b49c6a12a6b2007c0f3d954a0866b838a3dc937d0b2b0236a825a220c4275dea1976614b88640cdcd215d582253bc94da9ce6d38ef7b8db6cb058b040608aea07d46a2499da79deea907892dc4c43a6c2593d8ddcd53c4d735b05891f1db466b3b259a462d40e02b1e3dd97168aae3526bba9810ce8e62c5c6cfee288ea795f94c489e90a231c3621f124a158f49ee1c312558eb973dbb3619fe0a83c9f64bc0e166907e8458c5c04e7481a857c4937c555afa66a9ee6d2c0ecca2f4c06baabb8ca460796ea390d13ab76849395a7e94eb32e13dd357b81cdbd9c9d6bf65c77d216aeb66ac6a349e0433bff44e379018379e0750a61966251f0f55580ae8e73dcc4abc64fad2ce249e8618a45c24ee771ac39ef62413fb1faed5af4d48db418393b781e20940e8909c4e02ef7ecaa36955a8bb8541d5a1c4cf680b089348a81e531d6367f5f38e355c02f784aee09a14eed03eaf76a21b9d2792d0d7a74089ec4a87d9f03cc392651c1a97a05bd15fda9f65cf8a4ac906afae3d2fb36596d5e61332bf0402b588157d601752e5731aa700d38464e8a608d945e6e69bd06c8e96e5eee1e5bc72ae6eaaac84d07c53d40ce3ef32f75690b418b2440004e0efad0cac139c9a114dde4f06f418dc7bd97bf01349e6fb7fcb3c38658bccb04a839773439fd10db300b49967c525a7272ad79d9226666a0b30a725c0351ad71b8effa5d314dd52e4fd554199ac6365823cb4882bf651673327acfe3984065a8f49cee036b228e78b7721c828c51b849470a957ea40957a4d6632038ac21419c03f5ce83cb82404b7eb64ad4aa6935ecf3b9dbcc1c9bba07e73842897f215889b717feac2e1c5750850b9e00a76838b6e5c48c65c95440c1cb612260ec4ee1ca046d23413c862c8075a814b8aa505924dd39ef83ccea88705f9fe0f66abbd711be0dbbe64ca36e5ddc02d1560a8c9d006ee3f4a29a057794c7c5274f15d7dcbc16d74b1c176e042ea49b5797dc0942682395ea3725d367e8d29b248fec50781cd03be5d24c8f6f4a7c89c259200f9c0a06c4d966767b41da9ba41dae120d646e1aaaadaa42fb39248d482e6e62239657eccc39d14564ed8234f833aeec8adddde79115eb5d3e399b0871597ba1acc0e88264fb0881e7722205659f3654b407e4513bec5744ab6de4bae8287beebc58e2c760d7221011ea87b3b40db5f3ea265f912856cea7025627d8544f14e0677ea5140cba9f0e66974c963b71119760126a8c09d656f74912faa93c4cd9e178af43344d4eba60ee776b16dece56ec79ca31d566875d449ca2f774a5d5198638d2e0055eb8ea7aef136876412fb47c34041e98eb0948f616cba59957ddb33849efe116bced041549a9cab3bc3d2dd68a2f74b0d3dff3fb7541bcbbe5d5502d68fbcb71f368a6d4610267779761a822e60b6df3b471c951e246c2e07c5f6e18456787c58b8dbfcde5fe1b55fbbf3f76cbff276ab6a0d2d6d91069321513322bf2a76ae56471e5fab83c3e1437e8296d5caf68fab9d6474884c85539fa887a752f542957c4e2edefa34e3d6890a367adcfd5d65303eba8cebce22720980ca8e63b3b625d60e1e4d51cbd05e0238ea54c74e6688325fb1ba6cee71423c7be3ab2364fd967d1681d3392b248f09c2c8a2bbabf4f8379748a43adf2502057f775eb6f175cc6431e36daf98021075c5feff28a0b85c756ca206e4ea3eb5a84cc73d9fe74dc8747c9ac1959b04f026ee33e2a69d7eb32a207227679f972566c075a2e38e18eba42c5d9b97695a5e0c3fc7882a0acb0af4a2e63dec93ef30a0c8566878d954d10151fcdd7eb78a93ccf136e057b0bdb982f06688f3a4beb9dd09b8acd9be93c0a8b8eab4115ea690d5f2d3390f912f7d0f440a87c961f571b1ff97d7bb30f719381f27a38dfaa800b190f2b1bce2c26c75f0d1fbc4c33ceef0a0c766fd7728b29438b5e01d0885568b92fb1c3dded90f71d86cf591305ae73a4a8a97459d08bb61628a4ae11d34e9602dac6b5b0eb442e27355c416b583630ae1c07a8119e2c2125ba8401a49e603a81e8290804aa7236d146c64b469a803e0092e85fd1c07367c8266792239d1bb467af0bd62c166891d81d46c736a5eee6759f90cd7caeebe14eed0d98ba60b900697b01d3e483a369b5b6803e94686cae9070efa9e7c46c1d36a22a6bf2994973871d4639379c75532421738ca915e4c85043a68e0b63134a9cdc1df010d23a311e7db1481932c013ec78aa72985fa7939d177746ea66ee2a6ed116ca77d86cfb79e5c924df31697f90fc45c5ba26084186a8f47c8bf458acde3c0419477d9ed7aa82573828d897caad906f7bbfb952371cb3b1caf68c902c66d1c06416e3fd58d1370f2c0b48792a9b7eea8b23b684c8c4471c61b729b49891cf75674063f67eb6682b9551334916243991d15250340a07dd1679e597fbbed5187ccaa1b0bc39c6cdeb97dbb0dc0e279f4e9623774be49bb7b3c6403ef9a7bcd3b836f5ee10855c3454eb010d3bf4474c46759805a68b3742b92edc4bd3395705c429e889852ac994dcd384d7736344e816cfb85d3bb0477d41e88921794d216599ca1bc7261ba0809412a7ae9460c21ce88f51b0d7e62a77ef9369d568fc0f74629e91eebf57fe5631f7cb7c8da3ff3cdce32f26e708e629d87950b4e316cfa0288f2772cfa28e81c3d5def958ba8eb90fc3b2d41f0d32ef68b29c1dabb7d08660f16cb3363806f11882237e400e267d3e06924018749b0d1489a4b6909a379ea30fd198d6fe91c654e38cba8133651225574a74e33cdc4a250e75651a3bf62c980bea7c6063104d89f890447c10dfe95e37fa66ade5620d010f27d67bb232cc011925dcde5d76667124d526b89e3c72f553efbaa3019e5e677531404c1b79a189ba499e184b567576d1674906139ae6932de25fc068b61768f3a8e7c49352369dae428818a3b7d4875b5ce6a77d9c6c00729e62ccc395c0e04e9b21f5f94b1e565bb41f19585553a5cd7555e6634a186bc6c95bec537a4c4ca7426e7e753bd33d149babcd9dec1b24f3cc155a0c69b456dc64ee96eaefd0582f9d9516799fede905c90bbf0ec5eee8f2b524c9bb689810d30e85ea90459abb8e5ccc595821a59484a804a0f9ca4d178ebd1d9da21ab54e41c1b7cd2481443753ea0dcf47f21c622a4b797b80779428db9daa2a85c9c3ad48c2bbab253c4d6e284210757d63f66096a077a812489df36663ed09335ee4a5e273cee5b0210b60aa28dac051ae44bfbf08f1c152d83c33aad2f7e1301dbd294a2eae78b8af070db848953fe11a5af5279c632f75835d6e226a101b886d70512dd8381f2864d39676bd9e0b2ac36f9b17a9a93a1dc47ec222834692028ed27b604f2952c3e5187a622ec9d2904757dc1d8366058a5b081f57b3448f07ea30c855205c60f428de168e0549d76577cd0d36831e3b16dec0e71ea36ee3b5c7b074f134ddeb1e92e1149532472f31f74960c97f6b72f06fd4df76739ff3324ee3fe3fd15df907eff097ed971dfea863ad0e6e47e655b81ffa43bfdeb5cdcb088662d8ef50516c7deb70bf9aae44d8b1cdd24b5bec6e3c2bfa3a4d0aba998bf9a59b300a24d7d04aa903d4e46ee5378aef860c499b4e210ffcc47897f8a0c19abbf3126f1701f84139e05eef328e2559989e607b5dc191cd45d53301bf12724b68e3fea21dc2bd762acc7915ae4eee477d39d7828facf7e9b2b9b8386a1b396e6bc3391dba2a0d741c74c574c38d20ba6f16cda648f6043006a43123e656c714651b5028c033061a7a42a02ebea2493796e499722d23f00f1d38ca87fbdd7253d8b811677457ad488010a09edf24710be3bd3b633973c47b529cf357e3a4a3238ce8e8e90ea0c588132435ad4c40d902ba5cd8f03c28d04d6a2468351f7b95afb1a056743d0ac4426673cda440840cb3d777eddef191ba660d9364653877e61346444ba2a885ad0bb80653867a01e11bdb9601d9739cdb92753204c0a10fa44a4702d6395ae669de1f1827d1ee221833de3dd3187704f59400bb14a7807a5486ac6198db5c50ebf1680349bc0c2bd1eeb2d68e1c4d3f2d0a211fdd43794a58625b32a1714823a7e625d49abd7614abddbc3b36c8c24380c6453874c6f21a5cae49bd2054844c03c473cb41a3f66e021cc41b8751d20d664a72346e64b433267733c7fc6135674a0b94302a4371d961337560f1b8bb923b608b4c018df75642bc9b0d70915b40b81ff7424ed9535fe33e072a9a27153ce2932e72283cc015b78804653acbf53837d232aa205dbd5feab5d1eaf30e01404622c8a22f570b456952c9b92c10837c7756f4693bdcb3bd901346e748d34d293361807962f4483a854f56c583b68367b659b9d05cebf83a899c426b1e916f909eca46cf51d0458874deaf5175a804aa9d111d3e6f484dc7bb7bdfdd980b6c48b7c145a96b6fed00facc05a60aa27652c2fde6b61a36a7c0aa041fea44da108a2b6f51274b6ad80d08081e6f54913945773e78fe5ccdae3cec9860d35defac887671e1ba60386eccf1cd8e4fd32a1d0aed78bfc0772e5871de650c9243195064fd84ced78b46dc925d270d50c0d0387dcd2fe4e6d63758e99965b64b51bac78c5dbe12e0fe34aada6921d3dd1e6b623411cd53ccc52c5f8fc3b15545f398376c6ae38381e187b615f59bcc92863668a09f00d49dcf0aefc09c2ffa5306f8f8ec5214eec52cb54a5d3c87833c835c14869de413b9c827763a33ecaa5d6d44bb8af3766ea75dc949b66d97487f788a60087666ebd5c5db53048fa7063863d64ecdaa5c1b48cd5f9e2238de2ddcc09f00d3b2cf9a29ed695714ff6350de8471df97793ffc13b96049fbe282b539a883a03e29e249500b4fa42960bff80109a0c365479e38be81f891ebe01891040c04d3b13a563d6852b8bc715ba1f8e39565f566bed88e7e892e8a3b163a5b18206ee1560824076e3ecd38a3e3647c23f2c96831c5c5351c4c0f5ce01ce5791f8e17de5df3fd7a9c42999c7b999a52ed0c4d07a53827f0e978c4c7131f1870742e77f2f9260cb333921c08aeec74e32faa77caf73159338dad1cf8e4ba0736831e5f8a4d5c4a8f0ff638186eb6245605eaca1fc4d4871732e70fd638f1097d490da1b861b9eb8bc18100d0d92535c92ada54b568d8e190899bf314040f84bba74eb642dd260e481101af8e1db54531141d6d8e6643720e46182e989267a16ba7341696090d950106004fbe822053ba8c68527e4763a8828339891c12095f4092bf29aaee989d4030b0711117e5ead0bb8abce0d9a5cbdccdeb4a9168e5c32d92131c4a09190607749639890a795cc23a3d48c5914b8736e54091f41b35702790f43193525c97bb32a47fadd619ef5d83da6d16e98a5c8e712fa83ad9eb29772515434f67895c48372715bbd1cf540064975b2a25e9e034125066db8c0dbe0540fc529237a620b4fd18f279325e72138db1ab39cd97604059682115368d0ea4d7cbc91da34d5eb55c4b70aba06d7a8392a985847584c8949889bc85142a7eda8f41e1e124bf754ff90ca901091fa23c9ec8eba69e2e2fb27be8e14ca513c90f3515b79b7d6ed97f606874f7b788e8b15dee9f481bade17b6d2c539ddbfc50c5293454708b1e1a6395bc28570304715f4f3537e4b32a153b58998dc5cfb865b2c2e906e2a08cb68a18abb55b2ef46ea26ce34052bdc22931ab8815c63597ea444909d24993c2f06bc8a4082aca904efba9cfdf0fb8bb29b4077170bdb8e60987cc8e6a02c19b37202e170e55ea1d432ee07da7a99b4125fb6b8973a9cee4a74261284cddae09c7ab38512c91b93c53ce1c2d61ae9d4c0c3514223f553041ab4ae12b2b05f110c36a57d454449a613051dc6b6b5d6ee3ec95c9e5b943bcb51791149f733abddfe5833ac924caf7c76d1a1d39d1776d2b435c7ed420b24f45faa44f147d28458e32b27bceb68cba98bdc78bd6397f58330e4a578b24f3423458eec2dd5a83ab6e624ffb06564b95497bab26babed15155c12d9b337be4ed73d9642b7c23ff8192f778da7becff7f967f94d9ad2d3d8b14b4a11348be19c9f7f9c793c35dc38a183cc76c5d8be2fdcbb18c76c4e2234a7a3aa7e96303982a46bb4e793292e7a747edd86703ed3bc42872e616e2d9a466e19ba1c527550eb0fcfaa82ad5cf373af3b0f554d5df3c5b4e74406d55effb3bc203ba74f39da970ee80dc0c12278af6e8146d048bbb320b1a83dbca20c95114c5cd8dd923b6db8b6d3e726eaa8ccee136e5c4d119b1cc714ab8716fc7066ff7fbe355b90708ba8687beb957eda0826e2f8361c8dce358c43a0944057845f9b0a0f7a9831fc424766d4cb6e7dc6bb09d871de5915d3b2ab1e39d00c646b4d85717e52ec304c69bd7b55b6f887d62845860902e6c7d77bfdee1b5980fc3559f4ec3fe48c7b0871f8edc993bc76c739bdaba26632100d68b6422e7ee30dd231580e5cbad4e8af67c87f948bb4175768dbabdcf981e9374f59d5548a6d8509e45aebb43020802582497c3b85900b4690fe9298f6617add1b83cd7570c5b469ecae2d987ca1e16a8cad6cf220566623a03dd654f84c0aedbcf12aeb7220b2ca119d4e59e3f095c61a414980ee72956374f3ac20bd282eebb11679c6b43cede6101fb0a48555a4046a65ce9a996469e0f24726a4c1e326e9473e8955e8e7d35c7b9c3792e0d00bbacd4729be1c196cec86109467e2ff92cb2b9c432eeb81b7a605acf64e174b013d6378aeb0dd0ab9392b94826887dbec484d6a0cac28dfebc71615bf8fb3433970ce970d3a44a9ef68f958f4c33deb67409983b72ac0e03102373e1ed108eefc5c28d5cdd0a24fb4c5d2ed7361b07bc22c111bd01ae9cc7165780fa09614d0df0210cbd06c2acf5e745e87b088f35d7bb8d1c02ba6dde0b4b9d7532507528bbee8f228a9a72ed86985044e50a2fc4dd87333c51ef0abf45eab773b8f9b6f9956331ba71a4b3d9cfbd1f2bc28d38656db5e1209058fcb12f546c118463e510042403bbf92695fad994989bef52bcc0a67bb6227638941fbbe3c53506ed76422ecd6161ea427503d0c5bbfae45d2ef59e284494058559daed6d4a27f846bd6a37eb0a120d47eaa52d8b373c0b68f5ca841415a324b2c878571237e048947176c1e9c0670cbd01e27699fe9139c7f8be55faa74c3316454f742cc4daf3013c8844b91ba0da3526f5e842bc731321c1b654ec46f9c7e94490f8165acdd49403868ae1117dbadcccd4d65921dba217ddce89cc3fa54d6258392db27cc6e7460cfb62751efc83bb5be305535067184cd41784ebbaef110d00290298f7f56e0d000f2d21070cf6876b313ede0a9084f118c216d5e5d90ed08fee85a8b162f260815353a26ea6a50231b24d8903e21e2db4605741dacb3873038c137e4a51863f16caa95f9589a115dd72ba5bd34aad21b567b5a1211d4f2d53b4cd0b9b446730f45a8c9c5025114f6b22288e70585c8d514654ab51b1aacef77247799b4b89d67548714c57300be3d12cabdc8e2916cf34de1b992c8442342651d3cd2c742c7a1a5ce214766e7b33e54ec214a69a74abe43d42cfb17ec01d6c9cae8b9a4d21174b3b955f7b52f7c3007272bbba1c16b23d108c264b58a8a06c8aa51050926575a97c7bbd77e1415213ee6ec8701ce17774a86692a83b23605c33b78d34cf8fcb684e87e5c0aea20a27d37947c6ccaaadddd9672c1ecce8f395893a9367d793c9f80165f1ac14d46b9cf261109c1152bb0a7e77b949edd5dde3da700635313bdbc58c1f95dcf7da8a479ac3113de92ce849542c9ba7f16c8dc88d009b6a0a4f6ab9bbb6816f9de69996295998061716fa1d3eefb5cb7c3bf5a90291408d800d7c4c0098608ca88d8188d9cc88e9c812d0bbb431e7896ae9e122007d6c98d0b492a1b7a6f7a31db2a08b2ea1355f6d293304545648d25fe3f3eed266a7e7c7d3ff7137449f82d368ece2ffcbd38cd4f1e9852026babb5d2cd1ee59db34360793e0588e3f495b6400cc3a2ba61d40eaaadf363b1796bd2173786b761ab38a0d7bc48b4222fb3cad1df962731ceb8e53794d648dc9b758eb22c44934af008f4fa8bd030a2d1c4a8a18f4658b6f5884a5f20a18189439d4a46b4ef6189c85d0f0e652c35276f230c7c3fa2c096595e1f9669975a2a635763f21103916493867778b62469ac8a91642ad5b349ff7133f56dc4e19a913ec00ce1105ca2d363b48acdccf6716c30b958cce4e0c1b99531632786d421fad117276703af4cc1835a564a71c96bda4f22ea5de3571771d98de58f46341f9bd3b3b6cd8c60a4cf6b13b15be73c4efa58c53ea44d60a9ca61049ec1d65cf9456808f2d07ec6cc1395f2659dbccf15cd298bd48044c96233a9782abdfce5b1c7877a28382c7162a2724eb730e6b8a07953efd83efb7bfbe1defff82dd3432afd3e09c514f33f0720b8a5852c79fa4ae91777531fd3bbe301941960d7314212a14d9df999ca24af8a16e9cf06deb6b2412d6bc3759f2929a9ba042a6610de7a3cc5a3c6778a4e864399da3578e6b46aef5cea9b83998d6c2cfe531cd457e99eb806cb8d43d4aa20c90bd50058161ce56ca9e189d162b40e4faadd98812ebb158057012789cacfceecaa0b572546b5ef7fd350598fa7809aed4eeac9cf80c203c82966ae2a2cb2cc28350609cc5e28e3341eed873e59f244940d2d3cc5d2c67996dee72ca15eda83b5e07a1645afbd2704a482de167ac1d6d511e3b11724295bdb4a768ab631b2524dc0ba74382bc97b25cd973374841ed7b9a5c38eb1e4f751695d6ccc4e7a98eb3151711f4702fa8a4dc7cdcab4a83d22164ea90dbe92e13e124bebfbafa6e46dba23f9d51eedee40396ae3bdce0891b7f6ec346bb572271059aab5ca9ca6c0eccbe57bc8ae1d9da4b19d95176325e3ba52568ceb1db56b557f776840224afcef74c07c76ec64cc4b6fad6c7331da25cfeac73c2189652f10f4be6fd1ffff7d8512aacdf76941e75dd02548355c2daf7e73672fa1633f0fbe00c512136044011286e5d37941d693bc53970e275302d633dde1f432acea612bdc53a5f41474c32ae08645302bbfa9c6c774d754af47c3d2a753767198506c73b93ac554c1c2ccf48698d028398c08f3bb22715d755741c96ae520a3999e2965761b010c8b45634bd167cd40cfb3dc11d3479c0eff71c0e8e26659b167aef70fa7432900a872cee0e2bede6dd4d2b45c2c86554797be2a5c5855be05c10bebe3a134e1fbcab7199f36a0408f244ee37db29ededa99a809a165b563c52e25193af7e8618f874400ec4bc1f3baed76cd6ce4e254863261027c8be22cd55cf1cec4e03373017eecbdd77a7cb241ad718bbc2c040dd095c809173a652ed3c2f3ab91fa6dd49dc438a6ef49d125c02add9234935f847913ee496472a7a566831704014726f8e2bb2d0c94aa8e57d2964cab6aeb689c22743d7f135630f47d55aae380bd1c1b12df22d506c449323a9d8088d0862b8a93c9ff7f1dd3e7194675a397962a7ba454b9af42159dc918d41a34e5e99dbaaa59b6f37c1bbce5517c7b22e988c56524ed563c148fbb3e41ebbaaa25a6f72b00e3e3503d70c9b7fb368c664a4b57d58cf44dd4612130557204beb8bb905ce2b1c6fe1ed9462860e48f62eca7b33bf0465e168e261cd8e9a1ec6c0e4dc767e6330dee659f9c7ddec1a7cd244db78b3b1ebe2994b4911d572529aa5c2f9076c76787e3efb7fd57eb5792f51f00fd4ca87dad130704d6eff38ad64dd27ada4528f0a053d6ff6194f262906ee0093c0a1029baa63da1ff736e869e42db0c21d5f5fb4c94e0f146ba5b21d8b06cc5b5799ab95a997783e856ff3d1ac74853880f07ae19e6fc6325199786bb7c3aa7c6c77fdbd8ecbdb21daf96e3a205d1c947b7c3fa9182021220c12c9313e68e028c6babeb396f658e4e611ba2b59b7df73324d226b2a929a448c06aa5808067b9a7501b4ee742f5251b5ae162888f7ec3aab2ac7a7461f58951f3499c4a88dcdcb4dd6973d46f9b9212a56bfe3dcaabe4476bfa4865b8dd582a8598ee5e9e4970cab1dd9ab2ee9079adcf99c2ae154b12c4812a9747ae8083071906bbaa97ec054cb1ed0a99de8b6a872e1e2d238e4abde65852e5080be07f56bc6ec533aa5e37a06ce2618690c3b3100899c0ef52d98a70416fece270bbe7c78b7f3cb3b0eb11f04afeeffbae0cdbf3cde93fb2a7bcf52c6922cf5bc602249358f43eee99e55faedbeba48be5e7ffd311eb7e31ff7c62c7a22ffe487ba9224ca5da73c91a41e3d64582e4513991bd4732650847992bcabfe1457ab53b0957fb648ea4f3b7bfd118b6937f28710dfac4327eab833321da81d0817bc6e4abc8568c1d43144cf5520b0bbaa77d0cff260b7f22e79f5668d7cf6c73efcd8136951981182060d1d139c1ce8007c3c680a2ecce656104e999f08c227731004b9cb1d9cae53021e1a940581fc2480a01dcdc2fce83f3d721b7ba0e74e399be426bae1efb8345daf2015920b38d1a09ce0c67c0541f7a6542008c4cc1d046747007174f30b415e2613f07e258597fe3561bbae78290dbea7b74c3bced6b423b8ca817fc7c985398162a80ae07e3c515b7f55bafd83ef1710cc735907e13c7df4df535bffcaa3ffc2b8830f7ae1f7ac16425248e933a384d46dbe83cccd8e4144da5c5890288d00040fadb2cd3f8ab77f76480d82e13c6cfdb75a0242f9248378834b203e57a4fabcf57dd3fc3b6d50e7965368f7a63592b82080c0276502b669da6dfdb15b4fa0e6eb20b894878dde2878f0d7d9ca33b75d0fcf1b7fe2d14c1ef3674c921be1221b88f9ae403715012d4286c1f5e00077221ae41388a24d068218784e40702cb6f91f3271e32f6c6efdf5d0b64a0712d8281fb43b1826e60978cc3f32a860b84c41bd4196a4082bb8d40ca1e3dd9c5c4033ec5a10d36ce70e9a91c980d89edd566d57285b7fcdb2d18bb11b91bbe808824134adf8a3bf207d9eba76615972a7616b4edf3110bf0edbc847b99e404890898410215000cdeeb011ed9b81be2d1db52d5d8d6f3d57cac6153f4c83dde218a49dfea04f56cb9072dc7798e0df3b70c686834e507322832a2e0ce0b260db78c33876a0205418e10d57a9b93cf847cffc869dc65fd1aa8dbfe92c69bb3bee3663021a2133818bd5633a9edf802bc8b9270d4c297f33cde4dff183c7a44bbb87bbcdb6a70c5c2bf8a0e36ead5d4016ed1c70daf8ef42e4ff573f9c56a9a9b7393cd3d06ef4326e108013170f8789d4118821ff033fcec1914511f4b7feb2bb8a93a7636a93ffd11f862068830b873024cfb77efa7b9b4f8f3d000ab9cd8b7e2a3f8986f2d4f15bf91d343f5d1449e1715ddf469b84adfde6056fe509dcca78f2b85df27930fdf7db9ce7d77dfcb38721e2db132aba2a41a6c9e900c11078bf2893ddb742516dbae9169ce7509c5478507ff01176ca80bca433e9c0a58d471f39c92d5d89c2d7620778fb01d2f7878310ef88c2b00f510460fbc37e4d80085ed7c1294a3dd72bad5907d046ad5376bd88cd221a164a1eafd645834a9e2fefe185acb0f3daafe86c6715448af10535e43c0568c06be740e3e189cf7857e8e055b12b8f77ccb487321fd159b8be8078e55451ea9c56990218db0db28ae0120fd98becd2651712395f8e891ef4679c2264c316635b708f386935819fc2d7700cd5d4c153c241bbd8b5987ce7d6b5c7344cbe19ae82d9a07cc0d4e94441321b5d21c124c169f67796badb1f558a8d9c72b4330fc1b0f456913e7fef68f2226db30dc313afa7030edc6b9c772d3e4c9793db22514bd5548aeeeac0d04dead4ec83d3fde616d52c63a491a927c7e0a98b8b50076a2e59eab2f5e36068349b5223d91e751d011dc2d272eff8fe3d578e94829c54a60c9636ae442f155cad2e3733ded39573a80592e16baa3190f080b9d5141f09cadcaf9c7bed0353982a74d85c5b6c0baac8434b5f2e05108c87c43605698a2fc30dec1dbfe8d783458334cd73dd342c1ed2011d5d73a677b875f02dc42ad9bba209a1b18b2ee3e5b90d2ea03e86fa7d6fe89240c1a788fd9b62fc7f4fd10e6f6f3a6abfbc25b19e55ef11f57ffc38cd2fcf6fd77afffee6f76f227a3af1fdebfcdf5e43f6e9c79b3ebc9309fa77c8797d43d6eb3b6cfe0b01fe0b01fe0b01de21c037f57ed6a7c77bf93ed5e04fde2df9ee85b5bbcfd5f0c9066f5af8f38f975e9f32fb74b03ff968dbb7c661b72156fc4fffd43af6f6561ad5b354d3e495f3e6a05ff8feca754aba5ba1bed9493b7816b9366e5d3b277b5e14693949443c76728a8a53e4669c0169a25c49a6f05b2bd855e767a1248790d1cf65a45a73a4afe081901998ce28fb72caf09e27105d8bc24de7191f82c183daa7fc5d3721a25b8daa3d7b9e45df4a52121d9bbe1590716b3c67913833efe0f13e8b414ff23677bb08c6ad687558de1f1444aff6ca26dd526b0876c4119424f2065986c78b566ae7a5b0a22546ca58c394aae00d75112660d440f882042b4f49800551b07823a51b9322048e0931ede94932dd8f43a39e0ea5e6c9773b1a489d6548892accb5418c49b1039c106b151e799e41fa366277303ac7b862dab5b25392b6551d48bf2d079794f6b624ed6639c8221dcdca2a9a5b5e31a6c938e16baee6e21e41c34378c29c8ef3d7bc58b91d1be082058b06cb44b9338502b9b125ce4e85619161aade2d257739673fdab6129d11c10196294e78f5269e8e7d60dbf2615fa09ce31e0703587cc50b2f5d01936a0122481544397360efa599c7ec6901b8a35c285c78354dcb41364820a79c83b39b4e25e34ee62d27084878f450d84a9ca21b66bdd3c3a5ed132e77dc95e3575e3a5db9f30e77d8632cda027b92232dedaa4284cf91d0d2111b0ffbb8d6d19b2c1195d4dd94348eee58b874a40edc66ed94db33991f1af698e349c7ca0dd79ce4d63fd4222818f73e4c2d7300a0e20c5b9673b8b9437b983b4a69b30a55f27d069ec5e414b23778849aa35fd4161ba9b9e26e541cec7ba8b43aab22301b1dd63925adaa804528c52209c37a9c36fd625f9de76b9d58d01e38f51e3d812722f04f335cd77c801e98ce28fa2b8b095d2fb8fa8ad5ee80005688c8383091bb61858e58cbed350675f483d4de0ec93ed10e049358f3351ae881f9476dc8f83ffe6f832562fb0e4b748bdbdc04c5030f28014a0322deb8936536965275bce89e4e41cb1e872b456ff612662be278e6e1c8a4f1c73b76acbdcf736c6a9a9e7383735992662a576f3213968391568249642e266b2390c45c05b8fcb9f72e41863f1e4946c07a8c7060be3202be222275e8f6fe9d4f150fbf34d40d829b826baf6ec60f2c7f94878a9644b5012f417ae6749b8a189ed0cfec0dd241fb5e5bf7a89c0c976b04437441a4095af32c71f2de0134f1629f4f5927139b4601973c93e8498c4f23beef6f7ab7dcfae3c5be9ba4492a53d1677d2e518764daeded543a1f271285ce07010ccbfd35031a1930f902d4a159bccd250c471d4e5eae27978751c154e7229c012f531ab54cf73b5065b033e9284d88717b60e72d6049e88ac8740eb5c8f055048690317d15c228ff3207cc4db6eb1b416e6a3cc4423b4e7678dc3ca430a52e0281640038b1cb32ca9d5eecc3ea7e4855174f23d175976c4575267646b1bde27bb1b776e3d5d8ad47b2c098c26b6f7c9dcfe1e42e36a0e789ad5d0e6c86310d391f7cb15db7c9e5951e2bdd15084e0280e3baaf169ee14c59dfd9727f99f39868c8350d592bb5e39d4a7a74cc62e4c5e38d6c9232905ec2bde99d2f06424cdcd4c44a75bd9cb354b9e514ee4f31149e75041b212e07738758efd3b8161c02ccf68aa97e09a5776c74a609d0a05d694ffc54dd714e41cafd9e1de4d3dd702e5305b085d9262adbd89e79116876afdb5c301ea15a40c36680274b80511a91c99dd6633352ed9889a952be4ce9ac952f100883a438e20a79707a8752fe91efb7f9ef2fdf6ffca7f7160eaf7724034e4f7cf898f102a69938de4496c4f82776b5881cbac6d70b359c476ae59b464b6fcd6d1c812d98ca7707dfb44fb62f6d181b902e43df6e15daf90de5315e77cb7c7a42e0ab5f574807c55a800303aa731787c08f2ba211f87e057500b86247c5f08e45d7901a9315a092f460ed75c75656f1d8e6e719d46e910116298d2887db18ec13797f82c7ab306c7eb65b956c537269cad6770abc22a29bd3317a763940cc62d9f4bd96cf557dd192553e269bc41ad87a9636e23ca94dfc63c11685b1490fdd136c4c1dadf3d9163d46f40a031938a3e1d46bb1976c9305ce0e15ae0b73d89f25cae70c5a1e0fe374c44f28e31890ba7941831d4f9e57a6211a60fba32119572bb9c4b894a67622b24102ad4aaddd45ee8e35920fa4d4d909b23e1821a4b068d3bac233730a2dc1395d0f412f579a7b19100276816b3a43b949da090c24c0c8525ca5eae8c98b53a10568d1b6dc18468c529e673ee84f2ce65893c3a2dbacc56350b93201d08e0da74783295a97c9f794b4377767c6465c7e22540ebb0f40418c48aaab2351fad27055e8cd93a1e7b1520ba92ea03b42c10487e23e4f68a57c948f9e0c5718be9723dd8bf7f1a9568e57099295b8e57d262431ddd54d27d89b68d6bb96a59cca70e4c9391b3d9e4deadc119a640953695aca8e1a030554d0848794c0c5e2b8090eed9d59c153dadbd9b14cae886314447680adb43d232e90f17ca2a3c049f6989365fb7c139157e09c74000fc664342c0e209e7a7c0b14791593c274bca1783a0cc890f98d9def02e85254620e1cecdc48acdd4c330780da0346ba6aded889a185ab30ca4817465cc542e942fa748ec5b377af6fe5be9ec0330510c9699ee72541710138c1301a9e6d401102c047ce65c59ab1abae0588b33cc968be7fe69964771afe218f9d7e7b75eefb28e6f179b08fc0f2f21dbb0fdf7178f799df4f7b89a3fc9f1f9eee1f5eb1b957335e4c08e7e0de29572bb2b2686e74513a7476df6dd1445e1c82b256bbbc3fec821c8bc61e62640f3a31b30337d11631323dcae00ae38db20d15971b06d3f9d51245bfd7ee77023d9fec44cea9039a5cea746c0ff5bdabefc76d09c1bd9ec8f5e91485d3e3b9883e72ab669f9694a363b936acd35d942ca71f44c849671cb2a8a06ca5812524a3079df8c0fa4e7302f129d8aac3a952d102542accbd294ee875b73fe5860d8aa76dd205a14d187070845d3af5959fd17a342dd3613f4e84c06abbd4f6ac22594462a574faa835c7dde679a528a662b0ab819ddaf80871c951b8e1c6cbd22b49866020d742c121201387143093cf21212d1d950e56373dfadcd5bc632b3f2e4040880381a98865dc55293f13c2ddf2998463c5f9220eb5deef106a3d1a11c630ec598134a96fce13c583f05959dbcbd9c982c2567612da1c29c61df92a90c423749b7b321012535e836b58db014789ed0cde04e46edc8900b12144344021e10ad63cad0977c527fc6ab5e681a75878878c1ceb92abcf98e2ed02ee8ee4700c187f0069ad880eb44addfd5da8dc6f90c2cf2da49b16ad733875b93a3cc2a5aa101217fd7480b5eb82f40a172547938ea599edcf833471c244ca5e42db053288896ae297fc3885b05cc96894c2287cd43714441c3b52b9e34de6b9b34ea35a61a2d4ec5f4f4e4f6f7e2a3a5574adccbda3d342380e12352be7765fcd246c01be4237d5a9f16f27d3368a5a3e09d8ae10b433bb5910a3befa591faaf402850ae5f496089d6823f4c23d2917ac1b16f29edcd78d63515952edc83854c86b109ace196aed5306092c869ed404aac235ac6b631941252f7dee48fb315c4fbb245861a63e6bf3c29f4a29f692e1f18acc19a6ccbe4f48fa7a9a8cff34387acdb7fc732349f80e4986d3fe98718a9f740e411c44a2eb4312e0b8716798633794d33e3450b196db896a525157392b578f280d1ccfc515324e9460489c6e94c7642afdda8587cb8a906651efaed1eee0ac00b0840872d1ee1164935a0b9a2a6f8297fd1a0b44a79527e62c911292f4b7633797377577e0057d74850ce0d1ee621aaba75ed9a9470f4299834d03eab3da933672bb3b27044c2fc8491f852d42c8721a816aab182ecc20c914ac8aa82a15f38d526e57865a746e0b35548ad6a7804e2e9b6fce52b703b4af20d253805b5fec6224f3471c77009454b505b8e83267744517060e024b85e61e67a2a37c525b75134acf8283cd7b02b911219386370a8bd1de6b9a5471a3cbca4061b1f7b2cdb91278e99c90b773e34752a8446b2877f84e1fa7c9a31b93a4538376ce6b9435d22ef5cf2d432aeaeaac59415efcca68d71814d1014626e0ba7b242ca6313b38b07a4971a132167e8b2fe83e2bfa7eb411ee401a0914e268212135864b5c88669b63c7f8f7337d2b6dfa76b6acc8176740356e84cd2bbd901ec860779d87a9dd77dafd66df721fa1ed5bcd6a815343550b6f5e9d1cca655828f7b2d1dba4cb34b2dc211068f1f26c488fb78fd18d41139794a8fb422ae0b83256c7f30aea3137ca464055dff10a955e4e272db85ad7c7860ebc2cd87465260d445834d7828b8bd56ec68a197d3485c60945070be0963bc4a952baeae9a09a9a2dad367eb920fc1140981d0bf1694556a81764bb1eaaec45346f4a48f2d20c5062a9c456ee8eb0042601ab549b73e473f551143a2bf52efb13276e117b738861ee4a185a4f144a69df387f225a9ab4e87a9de2c30cef671e033bdbc8496f133402dc5f96ccd394332f955af40f7cfee401040fedff670709c97c0589ecacca274a353906399dae23ccd121e5cfa36fb01d812e51ee8902df869c68515a0eb926eb39027d6e167396ec79be41f22524696391fbab8649578bcd99446056c88268d99a4b4e8a76e941393163c44740a06cd3998f63385e922dac4a420dd463775a19523e37aa72334711d93cda4367a22968b1140d5af739c44f086b9f1834a0f953e819a42d02e67d963b223a402388349894931586f08831d438c170ac5d145059f4446916dddd41062cde95746a7a9cb8e7a0bcf099e1aac2caf97cbeba954cf354e363b730a40f1e5c187eb2a209e858a441f2e5e25f34ad35004b55eda532e650ce42f4dae80c7aa2d622372996b40a3baf5823e7d7a80ca9b272cc05705249ecf6971cbbd89b32dbf4e4aca7b30a88e41a6b5a141fe0a6d3a198f4b522e81827c1e869072015255b6e5a2f8864cb175db3dd1d655360a644a8a8d5f825c914debdde6d607762695936654651496875a7fdd1f5313e2b62305bd89a00538fbd3588360aede1e620cb3165ad6ba3ea56540678ead01added084a394162bb1f28b7169d5b29630d9e77ebb9677d2194ac9b41c7351a4e7153001c1994aab9ee8e73a931331cb2c5ca3bd5393895070fbc0a594a73b0876c94895202d83840aa9951a37c85698a9df322a16442bae74b780b0071bb96d410a7b6d004c9db990da77bd99eb909cbd69d0acfbc1f1497e81653ee8dd5aa244e3641f34334c6e695f076bb2ca801aa92292fc8f1e4ca52118faa1c6844366329389e19e8a6f0d2d1c4c25966bc12c76eab170d51c3b89342918591823b59069bbb2a9f330060a2030f69a43f12d9a9e8a4b4ae5984e01d24013d2cae5b3ba2acf910eb231adf803547cfea049c823394f63317ed03e2b2cf51a06a6b1743869eed4aac29b27b976cab0c59a462229c72e9ebd8af215c0fc0004c52e1d65ee9becd09a8f8476c04ffcc3579fe86cb3f3bea70da2bea0c67e960a5aac9325040e4a3b22b3bd49060c6109702e2bcfeb845bda900e4a5e9053bf5ea9bc249ae48c2e0a495c8c6b53a0cc8411881f1201e53e36a62ae7c6556eda254a1c29aa2b967d9fded42a22bdadf48da75587a3f25b271d9547b50c491b11a19220f8cc75ca92b38ba2254e2d795658fee5129ee34eb29a87ef3c4b95c5bbe000a8b7661fcc40fbc1bcec4e94e609176a3eccd06aacbda733e8ded6004de9121b027962357f26676dd9fefe7264fa57b9da725bb99d509ae8a08e988f8aaebe455cb6e5151bb17186f61b05b1ba4756f9bebab59667114f7b692ea35da63707fc130abc806960f458bef0d3fdaa7c28ebbc75972de53bec8ed36351df6a6b748f188e16dbc1f03893f44b6aaef49832f0745dd1f94a64fbb3d2be667a372f9fb10c2fa390f6f820b4497b6c099f470dfed2e12d7c0a41913773860b4f2224912dda3560dcf910ddf91bb18ee68060954743e5e93a373ff8f9bcc4fa5f89fff25f4c7fd6b1ab1e554f9f1aa6c4e47abdaab0c6f90dcf6b813718f85542bb01ca94d2957b533f168d84c14d1be284f0182d29019d23906dd5b1fdebc4baeb1aeb3edcc278e1d03ae9813a2e02ce0706ca1c5a8947d2510d0dee288d69a8c01b9d77a5ddf7535c2b1f0f114421ff5c00eb9487da444c6fcd8f6b8825896efd12c46621c8422c41b25883b717c661f8bf339b302d926f3db5e9c2ddae828b6e01d6dc4e50cc105be2b5ba72e2fb4946de47b4683842c4b704de592a3e4f503bb9b381f374d386ca59bb46bd0633657f2f97826cb6ccf2498c85df74acaaaa170235872d38e9d3986147396db683e3735945fa2bb98e0bd219862af9a71362097ab8878229e8f3aa93d9ef56c3aea86f0d8fd04e179618f64cfe52a8a09c5e522efb1584461e30c8394c201fc58dee9845618eeae5e066bf3056948624e7a7649c343491a91b11bb2627711db78aa8b953ede4f247ac2753f6083847118c0e3e685b5a30b81f613669ce9c22b6787346c00075dde4b378704b843421a3815a5ae866242ca211ff024050467328a5d281745783f667b55e57afa7c54d21b3c0639bb6f504ddcd316ceb9dde2e301d1fbb244a3782a96279107b17ef3be27446f85eec42a9d75e9d042177d52e28acd9526219d3d8f5c49018c8693d94e68287c104f679dc5f2b6641cad3e5ce51aa22d23be37cc193b89c0cab6f6e68314deea9fdc4e163b01a1c19b42736cc0a2434668ac11cf894175baaba3680430a34bc031d50270c4a7dc596482c38e28a4363a26c6202ebb8553954805d9bd12ba2b1907369b69eed51b8d8b7fdd038403d69a1b94c45d567758d4689c159e4582ba541e162dc4b5ad5b0dd6f651d29b0335cf65815e46a23aa11e0e31457b2e33ef1eb540849855bb0887634892b5909367d751fae83f6818d16fdf75fc31eff7ad3c657117ffb39b48fbd544769e025ae471e6452f72a691296bba2d0b92ade0b5f0c59ce7b87651c48997f612bf459a659b3152a1302922cbb6251e7b4bcac41cc070946e0a6d38e54abed2fcb8b2f65e42ee1abbd9a681626270a787b880ccb84a2a706294332a100ad2869ad362a78b53293879b842d86e330c75e76fab454362d74de44912d37e3f2ffcdec859c04373236a627bd7907d7da32d0d56add30830c439bb6dbe2a5e8b14ce41c64e49ab23b3e42dbd5eefeeb1109356ddd994cce34aaba3d17c3710ef91a85b2863270064ad69341511be8cf54d86c3e43e5b5c8b77169abbcf7618773711b500faee9e354e578459266fb888dc22e1eceee580ca8e2bdbd3dd340eadc951a52d2cd8a4ed06d61d1c7295595957773a8414d7e48a94e38d59c2f38ec3c9344e9c80adcf3756f077e25a5b0c4645fd9951ad8182ca248338bd31aed18c9b1d79e3571a72db2d0e9dd7de5634771724c84105313b82cf21b1b8a1b087e8bfc5543e6d0efa5eb2bb779f2cfde935b0ecdfe43b0afeedbf9e37faafe78dfe91cf1b7d82aa1f3fe3fabaaf74fffd46d3fdb74f79ff95af453e03f4d3f7b3bf007f03503f7f24f1f90bbf1fe948cac61f9e3fbbfae1fbbefbefbf148ffffd1b605f3e8e89bd9994bf99e27ffaedb0ff655efeffdfbc7cb2e5f4ef96e3efbf09fff8d22c0ea1d0874f0dbf28daf3c675e24df31e3b567f81df2bde3deff3c7574fbfffa6ef8fdf627d56bea70f0effe0cf85e5a69efff69f8e0bbf3c7f84f76fc4861fc9fb8782c07f8659669edf26415ff5c8e3d4a017278ef4c13db5e74643a73583108cf146df104bb0c9a1eb528eb624a3c05d1cba9caeeef196fb5733b9eef77c32a894741cf8c6cc2fd63294a4a799ab0287053b5f9b51602b48d6a39b509cccba1b2f64caea7c7bbec1c7337dc44c0a89b444e058ffe0eccd559e375dd1993ec6bd59cafb31268e53412d6b7cd70dde336a062f8471acd93b85226cb83050348005bbae7c24333bb020e822d861f0da135e96a7e9d9d4e0dd7555516f4f03837123a013c09ea41d041ee1c1decd31ad5ddbd30120f52438f94c7d0ac0eaef51a44f16fd338da15f3f760dbf7d6d9ba6e90f4af4f609f45f89b8faa053e8ee3b9ddafdc775ea09025e9f578fcb78d8b4fde70f27bba6fd677faacb7acbc128fba03f1a2cb55b2d91e18e9de0b6ecb0904b231dc916a337102f28bd50999222a5cb956253bb95348a5e0c35bf7239ebddbd125f0f537f652db72d5a954b740d54ab95b8629714876a50211227479c43a26875845ec806bf352919dcb5fd2cdd65acb4b11ef265b8382bcc55df2f318860003fedb8456b11d6e06ec37938758493cf8e70da83c74c6bb17e97663aaa99bebcf89c91f3fecafbc8c5878434eaee470c74acb62a20be81946b7d173d463e2b10dfc14157814effd8c945221a88f8c13d32aeb7fd85c6e6b4c9cf857fe8540ad3d51356f744dd8f8056b41a33c7944cb947924f276120c07135f073d5634214e43120b9371a20ad13d79126a5cc3b614a599f91bc5cb8d5d0520c2534cec3da290ab94833a0d02180d23d8c649341d3306f2c8083c855bfab6cd15ed280bdb194ac8e35bee26b3f9d533b9135c861500f2be2a2c6c1126f0a55c179ee6c2b2ed39c1d0313483460c9b5595619de54b608ccfee85fa7ccddd4d8f6af47b6b6b2c7dd18ff76936a1b13fc8ce597fe921266a3ea471c0827cf932da9450f150e167b695e53f44235a13a33721b77bbc2df5f6ec0164a6c185efad95156e18a3d021e236cb8b54523d2fdec8fc7dacd89a517c49b11c7f0acf5728a804095ecf37a7abceb56c98203aa4efc7efa7bdde9f75fa40fc7aedfb4be6df2a74bdfe9fd7b2dde80e6cbe3ffa7d0efe543ef04417caebccfc0f3890aff8848ff7cc9d4e8dd5685c3e3bbc2bcf2b4e9296952eb1834166b9f69175f8f083c7461db63eb492402993fb6d716ceaa8257e7f38a1a585e46c345baac4735389abe5975972676667c386a27a71dea4eed962edebbb43b8a489701f85d06c00ad749502f2631dd5f80655f1d9d6e4e349bba54046c780a6697a35d0d593d08b7b69cedaadc9561ce6153b7cdadcb45c8999179da65e4e641c993673a6641eb6bc4f4936fddf95bc1d3c90d3fb376cf2e3a076bb83122da8184083330efd7511c86de0c4e9820ac71d033d79042c163ca71a57a2794baa87ab65f9b4814dd83b6c1f64e3b861687e1c68c47e91d1faa1b2bc3a9e1fba439b47b12505175ddbc47e532373538ce8188a7a27ba508611978771cfb24d74523540f70714d6b073bc79c56a419720905f94e4e8ac5e84da66d71b46b1c230ee60659f1f4aa2fef99772c767e56a4e6fd860a82dd3882c9dc4e2cc394bb8a2992cdb962d2016f27048540b60947baa447ee1e34c61a40e1247a6991a352b6963e8b4d9058e76d705ea9e4d648e0cd14083487bab4292c2ed66038a78a1667a3331e26c7067a6c40f5d99da79a77eb08959e145217d9b7ddcae8e895396103a3eeadc5bcb9a51333b247a690801e0de038600ae20faaccc2d0d99a8c7e7300b00ea2a9e9b65ee25ea8ce0015370b697739ce2e4a92efb866ba58fb288b0e51d3ec98b32842e73d455ef354c7099e3d9343e4e3c12ece9ac8463bd5271d20e293b5e48aa5d92a9cca70b338b4dc4a0c703e2c712ca8ab7c2dda1d6a8f301b613c0e72f8ed7ae3cdb50cca9db08bd66baba4b0144dbd306b65753cf0a7d8a3c13aee2f41ec6121a1b9f5b8851f48525123f7b2b94989a01edb5b173100d3bf6d73d37b107a46902e8e7effe3a7b2499b71f8e70605e115144a4f57731cce382504d7038c1c5ab83a6dd199ea25bcb5caa2a35e3dc9bc736673533393b6dc0a9f2d042067d3f47647923b3a5b5fc6ed641401bbba1b9403989b47e05a1f13016d3bf962655a1d601d0ed68e16e1a7b03fe0c10a81092029e31e5aa07d2d81d3028c02b394c138dcacfd1613dcf970f69ddbd0f00c89eb1e12d55dbfeb3b23dc794583c2f645aee468619cbd96dc7bbbb0d3c0e5031b43b679a76954dd9595ab568f4e4ff98136aac29b22d6bf40c789494f351f9c689f8578749d70a8a9325d2436d86187422da2f448d3c274bc1c2aefaefa1444c2a8e5bbc7723a75add09f8a862bcf703dec4264debb6e0383778520c1546ae728999611bc23434cfb8b74438fec74da6f2e938939a95b6dd4076e10daaa6a9f13361313ce5d30620c73004e46f382a355e14f9c3547205a9f1dbb69edb3b8145369cce6e9489d448644f516be529e3eaa0e3ad9a45ed13747ac77c4052ed0642f8d784a54ad44177e61ca67b687fdf13c3efe969ba034787c55e918e81dfd7c2a0ce9422b55117b76657b57f6c4c14388354db900496a9f27c2daa635982ae6d6de35473123cd284e9246b2195953cd943220058f63b1f8d0528010e38a32013c2fa2f3a029090c947d899c0c54151298a0acd2d7608622a84411a20ba441f9cd4a732a3816d70a25e08c2e8f0109cb336d9b69abaf978914b21443ea3824c51cb9d4e9450e4d1b4a9a04674f4a791517652ff3b31206c2bcde17104bc64be4a40306e84e1ddee1188dc75b037bd5e6b709fd1eb8d6f8b28e8976c8f2dcab46b555290546bae07eb6daa0bb1cd90348298530d8c495135f5e06f3ef781e2f8f95bf7ef59b831ebf7fcd07f93e007e0e149e6fa6fcf41ce9fcfae45884591c1641337f7d175fbfd618a2afd516a03cb7c59f1e18fff5b16fbbfffa1cba3c3d43feeade206fc7cf31cee3e29b2b4440ffedb5f527bbc05ffa7b6cf7fe64eff78fa11641921cbbff93a75d7f7d0cff9732afbf7e60d0b3b7f592ecf831a1f9dc73daf9cbef7ff8bf56f158ffc5ff4bb299befeebc7a64f739a9eb30f4153468ff4e733c33e70ebbfbd9edde6fb6b1f971ffa7a0e10dfed7dff38c4d3bcfacc8fb6057c10ffc74f7e546d1d34dbd2bef0ea1be9cfcff1bf5dfff268ec77b1fff5999203f158f40fd12bcd91dcfe952107e8f1fb9afe85773ff4f76bd8b4cb539cfcf56d39e1473cfa3ad5cf5e45f02eb87df3759fb8fb3e7b833c9abe3f7e599747b3b745794d32ff54f5e95fa23818d3afef83e91db6ff36c23363df13f6aec7ddb71e1f26f347ee43100e71dc4729469ea4fe292df5f585d0f7520f7d8be37ffb8c0b2f02f8fdcb1ba0df9ff35cdb1a66ef74047a9ac6736ae9fffcf27ffefe47fbebe3e9efbf3c0879af9f7f65c0b704f86be39795fbb4f5072eee1f79beef60e4dd34bf60dbdfe37fe455af3feac07b99855fc29cadea97a0dcf8fce7a2fe81cc1f029b5fde7b380f99f4dbfc4b867c7dff003dfa164a1df0c7efbbaacf6af95e1cbe13e1b7aabfd6cdd4f9ed9721fbfa511c3ed5f7e75d590f0cdd6878a7178776f80e69fe089b28fef58990bc4e9ac7d3fbaf9af904a94f12fb4bdffa61fc5bdbc5bf3c88f8518ebee7c80b807c0f8c2f9af23173fa09055f1ea7defb8acffd3d43e7a3d27b0e3f2142fbd3c6a47a0384afdfbdbce0bd267c4ff66bf997e5b76743f6ccccc4aff272f9ed5f4e79b5a1a3ba916336955fffcbcf7cdc6c7dfb3ff77197279fdf9fda029237e4c1a1b7b57f59ad0f40473c7edfd1fec3b49f0dc6c6fcfad7ad4a58e661f1f54f71e13bdd78bf10ef8de01fcf86f5a10f3f3f1fb67edf4fdb52bd14ebb10ab6b8fef94d2b3fbfc2f5cbc57ec38530fbfaa3c96389c7efe700f984ab2f579e73f6df19b49fa2a0fff23ce08bf0ed76c8db9b277eddc0a9d8ecd4d77730fd6e1bd71b0a6d553ebe76e24fd5fe4512bfe7f52ba3d08f1bc5de8ff049be15870f2ccebc64497e7d7259c6f6ebbf33f41ffe4f19fc7e46efebef9e53aa4f7f3fb1d8e3f74fbc892780d8e439fe36f3e7f3cfb43cfdbb0510c356ff4fc0eb557cfef8e936c6ddd2dfca2705fbd8dbafd7b17f059e67c47c3ef54b36547f099beae7e7d287a3bf3ca4f9a5b875f272d466ed5fa2267c577a6bf428bdd5bcf61f0b5bab0f02f0adcdbbd6753cbd2b2563fd06961084209fe2fc93affad6db5f6e63f3d2c787a3bf7c9c43dc0c2f25bf7dadb5f1ee2f1f4a9bee7d3cf1aef34769ebe4db94e20d90de51b1357ba39de0a0ef49fccbddefde91f3567af4bb955e407f58caf8b77cf037e8f8aef72f7fadbb8fd7bfebae6ebaca2fdf7797f9e5b0fbfa2756e013a919fcf42f61dfbf3270181ea52f6fa5372efd78ed8d9f3f5ebbfbe50721fd74b939167a4fc7f53d19d73fa7e2fae7445cbfa3e15507fa7ebbf4ef11f48895b87704bd349eabf22f5be9a575eddfbf49fc36c8bb3a6fa5674a3ef2e65d291b86f6a5b7217e5bbe1f27fa716e6f2c6dc7ae2d5fb1e0970d173f3dbf296a112f3fbf2f7cf95e9b3e9c7e13f41f3aeae2cfe6ff10b84dc8bf7ca6b13f5e7b9bcdcbb54d24ff5ad38f973fb66ed3bf36eef7573fb6adfabfd6f6fbab1fdb6e881f967f4ef50f971f2cfd4cf4298afa26fadbf5775dbc9582ce7f397aa2e92f6fe5173cdbc6fefaceed7dbeb6f90caf425f766fb875e00eafa2fdcd7abf5bca2df27c362271b989e6b3fbf2387eedf5c19377a33f19942f1fc9f9567ce6fe07dabf955e18f4ad655e6d7216051b49df3bcf7f55c6dec6fa4ccabeebed23486e9afcadf5a6556fc7ed5bafdf8ff0feda67146cc663f78dab799d6d4ee9ab731fcf9babdef79b97f03fdacd79ab07f5e1626f1c7e1c5b0f10fff5a9e2bf3e7209cfcb36f68f70fde168fdfcf1d4e36eef10479f4dee3f38f4b30cb4dfb235bffff1ff0179358fc3");}elseif($o==="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo fun_adm_lzw_decompress("78dadd3c6b73db4692dffd2b24954f032c215252f671270651d98e13fbd68e5db6b29b2b8a762002946083000d8096b4a2fefbf56b06330028692bd9bbab739545609e3d3d3dfd1e3c9aaff2599d16f9d697caab922c99d54519cc8abc4eae6affa64cea55997bf2be5ec7c56cb548f2da1f7e5925e5f57be9607afae3db47d68859cf905fa3722bc9aaf04b15756aad09c63c35369dc0ff6196e4e7f5c5dec1d49d21da08f496bcbb903ec9b27e60975159a751e6cd7306312acfabf0495946d7c368b9ccaebd7c956501941278953facb27496780706503d92670098e7d2b5be482bec5ac18c3d733e29cf1f3c6d6736a8f26fb0d7647f1ac2eff8a1932fd2ab34f76aa849eaa02a56e52cf16fe6b09708c6e7e47a2bcdb77431b79a40e934e4327a1edf5ae345599d94cfb2a8aabc240b66f8f053b44882248fce3218239d43b97f9364435317da2fc332596611a0f45d72fefc6ae929efc3faf4b4f2d5c03419280f4ad68f7de507eaf1a1f2071e8f7eacb6ac66474af90e68f0f0b18cf2d8631cbf83c7f075545f0cb1b05878fed8147bf8f70f07fbfe606747a3128b0c74a3d3e1285007ca219eba383fcf122f8d3579879a8e8780b7e759828f4faf5fc6d8644c98b0169ee67172f566eea98b348e935cf9df85fbfecd6344174cbb28be268c56533fbe851391488b288e3bd58f04f2ba5c25369cb3a2f89c261eb44ecff3208eae2b06388eea24cc93cbadefe101d081efc32aa9e9955ecee5c51f50afb1591f0f19f2900335de4aae96699954a11a60477bf6af4999ceafff96941512ee6c559678d0cd71e577bb031fd4bf45d92a91434b64b4cdcf43fe49e297883f338e547ec55e30182e4f370ca5ae58e2f0d5a46f9ca9ecbae7e9e26154d7657ab6aa938a475daf6f6ee1fc2f93593a4f93f8d834a4da23f34adcc85e4f5a9d44e7783aeae89c115f32da35c97ff0d400ea06ca7fac02952a73dccb0446ab6aa41ba847aa69332f409d3df8e5450a049964bbbbdbceac7800f1d8718f9f8a3869a825c91c9a2e9f5d24b3cf746811d4ba0c9d69545d027cd6a9afcb40cdb04b12ab00099c9f35bd036b59eceecac3444559a6a6edf76191cf80ad7e2636d153eeb9e79a31fdac58e5351c2c10002ba427a0db17f522c3128f8ac23054ea58a92305e8e5a201b008eb483ff58e43ef34bef9e6d61f3cf647e701f0131f7641f9cc1ad27cb9aaabbb0eb58550fbb169583dbd3ee19df3140d07c8d3dc360df7c7e9b73c8908ba713a1830dea938e4ca493a456cd2cbb0be5e26b0b26a75b64861b41b2e8dd30a3922703259bbda276e68b34340acdedb20475a12ae952caa50103f4c04ec1690d4c88111e0c131347d42354039a461711be55d88216ce862dc1018b7694159e332b885102016f46e828d5b6ad5c12df76dc33d421153f9041036f048b88c7829dc8560d79cdad727a10a9bda0d6094160c9f00864fdf42370dc0270440af1fca279fa6c3795a56f53338b6b1f54838696dddcf3901fc5069d3603c9c4720362cbc3b3cc4504512bb74a17bef8fff3554824cc0a512ff461e06033cef5a4008dd7468843843f215e008847bd00f9c00fc59afb72f41c21697881c5603a1eb7a6dbf79fe30ad9e1559162d2be45882566872429a0f8fee8f99ab361c95b699166715214ceb684dc7718d3200d84124cd907fc3b1dd0e99539e15574a0b2e58972eb35784bbc4cbe1ddbb7dd461e02812914beb7174935e8ac2d60d8fd57bbb6d9d4b7814764becd962bd8f5cd2412cc1d1a8856ac68d9ad1bf8e1b069477bd5935a2059b0cab8b745eff35b9deddf5b6ad71d76beb853a87a11ec5a550cf6a786c77920647a80f391cbd25d19877dcc3b5cd8c697e1e6e3b08f84dfc9c57669686d8d2d368e6ae17da66a154eb332e797c1c67bdd6cf1690ad71cf80363f6bd2c305b1ca08ff48c5b43a86a81e38c2d788d90bf87db8e64b106097305c81c6354f7384ca21695089f3a47c71f2fa15486ed176a141538add5d719143b7b74595d271d63acbb2a8602bb42e44c7a64cbea6c5aa7a9f9e65840068825c463319787515ab73e12f1765320ff035605e40c49c8258f8c9c352e062f47383ed0621956d8707c78a8a4119a692bd039f8c93ac984538fe105b87f8c7412de06cf506b465244a998d6cc32e43329c270a54b4ae9611a8ffbbbbd1b098cf617f5e25f37aa05ffe9ec6f5c577918d65ab62efe04fb407557d9d41054c3ecf8acb507d4dab140f4517be55adedb9769f685517aaabc73f89e377c5a5072a33c8b51bfa41e67211e58020cb7ae6d63f60fd33aae42e2470d086757b8af156c2c4b3acc8135c98746856ca6d78e02a2c5916f41c716ed1d11ea4a37394a54c4bb1b0f5de28979368ef1fd3d3c9693c00bbf1f12e5a8e565bc7f680c998ab0a77da0ce8833548c367184af7f54e209ba664d6e0416c8a1a135ed14eb7f06d3f46cb6592c7247b3c5890df258cf74954ce2e80f18390ce2d9a3782e17372fd0c860ac3836fd6eb76d13ed1209873348a4d48b73dc602cfc57f3d4b26d11adb5cc812a09d7d72acea6cb5c85f0357491cd7079f5a3c94a4306d20393ab36d82c33e1d6d95e711f5949ab4b5d36e21281ad40b0d1f5db65eabb6496023c7b34d828dec5cd19e03fbd863c42bd6346dba20cf42faf58ec5436d67edd8a32334a130c40a2d3089e74181b5458139bdbbbbb6e3c06de587212f4f041f8bcc30b466f56fdc2e42ffd86ddcaab198d0ed23ac6379491a17e0adf25ae6ffb3bacc84756bd72a93f30c2ae00068ea5e247504afb0926d2e00331bdeedc1daa240bb3fb83d3becf470553913e4db239c15f1b53974a4a39dadeabac8b5b58523f44a1cae1a7e5a551727a2de6a1761d853276a89bd78d0f01e74b2777779a7c54b293b6c94eab5b0413dfbf02c5b951ec1a8972215e44be0323c1ca2cf925e61b518b22dcdaaae2ee66dd45e55d1c137f8d710a596d27b2f265dac98ed123d18962f50b8a67e1b2b6d2cd0526456f5f12c8bf2cf0a644e7d922e9202c4b6c522fb7a00430ff65d474b12835e959f3bd4423ca9bd8d7fdcef6ce337ff4edb68adf36eb410cf64ed2cec0e7fac72d87cd1ded4916ae973cad86eb2b25e993491f1a7ac900235ba16dd7acddaa269e71b4ad44d908233f666c069c741ab89a38276e6f7a70fed042dc501a659488bfa7a2ca6edee6906baa8929208830aded7c55223f961e4ac1f440dd32ed8c68a11072a9d2e7976f58a0f7a08502b5860289fb0dee3da653b9aec9ca24ccf4f88e66d13a155d778c1c64dcdebe8ea157171a906743ed1ee5b9037511ded2da22b66f4e429e766ec66bfaba5e57353c87fc42cd9eac0ace1ac1b1875d5d8696c4025773f975777811bf4f4a5735ae454e3c9713ea2b75b7f7c9164cb67595125ae1c82e3b45aca9e12d23144c4526e3ba467176b5443fc05eb2c9947ef554fdba019b11589696bf5e20677b4f7c628a726e26519ffab1463a3dede3eeace2c1e818e12bbd97c71826cd1a7e8ca5b95a01446597616cd3e07b8a7c122a92ab2163906f065051a5de8899bea97d7af5ed4f5f21d171f637cc02df2fc23ddf6094cf335f9e5cdd9273841d4d429f1d4eb7456165531af69d89393b7ca3fa253ef930092b9c5be0460dfd751bddaece956d8a6a2368a06302b693adbc63b6a735ba414863b59710ebc744b7aec7ca706f23850df8ea0dd776a6c0dd268927d850d87d9e2a817faec4d60acafc72054d25411c3a3750f0bd8560f235cd1b17afbe6fd0948941f9f9f283f803da3f56115ea56dc1c685df6e04512c560a0ab671864ceeb3d3cde0a6cf0e512c43fd9f6a3abbdcbcbcb3de48d7b305a92cf80b66389ce6d1aee973d2948e2bdbfa778e695bbf7141212d8735081e26bdc8da44b86cde60ea919e20325289b121f0ec58c30a010ba9807eb3d7df4d85343de353802803c3cf39a900de9a021316e5694c78cb346aa485dfb58bc17ff11625a2bafe6b8988538048a038742f9fff9fecd4fc7f807452c70b866b1d5128d41d43efda3040eb787619fbe6a0af08c5b216fde70eddc82423ab114eec6a506148f57af8a2806b40ce99f1b0bc635fc009beee1ceeb93eea8d6b48cc974ac3321eef6a4778d21d221b42924ee42b4143213fc914d9ea759f2789436a143144fe4d41573b7ab576c8f3e78da7dbb2e6191c59ab5ce350ee677460375cf788ef1390cf54a7195c325d8011e93fecfef5e3e2b16807c58a586da1fa8500d7aea1b654b1b75c7b6c60086fb9159059bb284549af35391e69eda155510a889111cd1f690b37cb42caa5aaf842ac1e0ba2862207f6c0effadd8e0f1f00f23e42d03754c21ed684c5329d550f81d64ab09c9669c412fad226442db683df937f8174eddf94506ffeb8f355abc0f61cb1b2423e218181b69f6ae14ea7a64d886a963f6c404a8ef0497519993c7f41e9b66bb65d388ad123ba67a3b38629a894943f1123b426066d728cf40b535a5e23643cd28cd2350fee346088d719690b38b46a7da7da29b5a6a4523f46600539d080e3dec7aac0cac4746c710752cffcc6a77c37d2d0fb13cd28f665df462abf1c6be39fc8bb1f82dd5de7601503cdfb1a5088aa760f84abe8fc4026c14847ab5b0f563ed17e7514b941b6fc80f4c35ac0c39bb8533afd735e73388bca3771a1f695730c17ee04b7427737a0da8aeb8f1606f43177133ff3138dc87b3b4bc52e44a302961a05555e1c198e6b74e1f0a763bb30a5aa1bb5e239f7ae11f46274cb6412d8463a1bd3b96be87025e6f7aa58381020f09d46ead10c73b5181a9d9108d8793e22d309e5a3b7468cdbf04f6db7f89ab1abb1c86dc335eb1c260c63a94c16411885e5896a9847d7a9ec73c9382276898c7c051b0d61fe3be4a434a7d13c971fbc8a106583abcdb2aadd00c0cbe5abe2776ff42f31d9a9c91aded51d937205757703b518d0170e03ece8e90c4c4f77bb8a5a3b458bc51ac23deb9be16632b84463300a537d61df7e38ca04e436d78c9fe829e54d62186815a1580672efe1d6906c604c67c1195209c9252057b16bcb27903985377e1017b93605021795d94891705590afb1764aca108bb4eeb0c14698b296229059f22daadb155174a575c29d6816edfb58fb1a2494fa2eda70859bfe256a37762137f55540b83d1af0547ef466f14817da61a8dc8044b6393df054c3cc1edb7842a5c9fe526928c3bea1f198ba289d459cc291e3c1e352be6f81f6364802f830364543666691f98346def5acb3bd3043e2a287c5b163058c454d65b6c5c99c26ca27c96644f5767800f1dce75c2b6dd33cecb6fa77ff2a93b3a0898c4e0410bc1a3835bcb0da4c3e8fdbc17c67a8039de07d64b726a1843ddbfbd6f1d560796be23d15dd3056c0769b022fe1b170d48d0288e9f7f25ad134b03457c4ebc2d3fe0336c62ab093a9aa5058a5e773f9b8e92b9c450847310ffdf27f36895d50c38395e883cb90580d2a4d37151a062eea1024e5ee84cf4947cdebfdf3c6d874d7b2c099a81faed0600d8b3d972fc5b34a25386fee752e25057b214937fb879a254e546c1cc2e83e1c1e6420076750caaa65eb26ef12a05133dc7f29e42cfed1bb0bfa5496388ea3a9a5df04caac8d5a03597bb01444788f47e0fbeed2726e5de8a4b1a8f5a62d2330e39e75a57304df5f204686b25e11f8e8d9bb1a3e75a06811d7d2219b330fe587188dfe390b5f349c516b01ca03206c9c7dd5d33f6768856b98996d8e2f3bb85e5291db7031aa0961021b2bd4378948c22ae606f2827a24a5b351d7344f5fd4571c99e53317f833f3be0cb10814ecb0eb6edc6741a694200db2ebf917ecdaeb6e24b28e9bdaf9c444d64d9351a59be7eccd2fc73152abd373b1c0adad92ae1a8eee4a02ccc93b24cca1dd2c4cd882d7f080d08b6ad20a638fb149a2212ac70e48a3996938f641b4e1fec2e7a8c6eb0ad2e1fc31f4a6fd005a6c692a72310eea7a3c575f52503931bdf4600e422ca476aa0e16b35af4e4792382e3d2aabad84772d04bd4294682cad408e2e044ba61240ec31bcd97ac6f3c5c47e7e7f1eaab16d3ba9a8e79b125171e23d937e7ade9b7cba2c13de003d816e491405b577c952aca6e4ae6e6caf13b6eccb7f64f35ebb664cdc119a369e737d6cb3e82cc9282b20c410db974a33f980b30725170ca7cae52e0885d8c973052cf5742298d0a9c40c2767110dd10d89401cf84d1c66f461b5dcd0eb35a8749bbba1f5feb08e6e3750c13e0233d8d0f51d2992f6ac12023b7d7c30a1a7a9f1584b7a6cc8c9531fd31c8e3052140eaf1849d4233479f13cd4046c2cf1830dd4548f4a12719b4314e2e9b35e4295c6ca04303872e43779b69d70632b479812b3d8b9c999142e79938c6f913741ac5390423bfd734baac67d24c9347b3f498e4e27a2bc9c4e1f8f8c7fd2a4a0b793fe4c1a6547394666f616cedb65515212b4f8533157fbfa465c9ea127a5ec13c218b4f4c0dd040b18138bfc9b5b567ee23374d6702accd95b8123bcb144517c469943df37815b3c16dc2f747c3d647a9a4126b2c4a91323edabd714e22c1526e0309ce8733ca1b978d1c91f60ef70db754ce9c8addc89f6086a6c86dfdded816fbb9506ca44dad370dcb738d3b7c728767208317b9045d8e7d056a02c15f5f7d04fb52eda84167777310c9e65482db6f961df937002f0e2ccfcccf0908d2a1b686731de01ac4963c4f6e765b15a4af238ab36a8bd300dde9be5d84c682538ea61c29e20be287d7008c2d107eff2222993e1c04726391d0d93ab64e65979021c41c4c6b2334b6748e20d543d39980e54b104cee66b2f65d8aa8522a8163c618a7391a1fa4277eb9ef19231af7cf4eae55f9fafdf3dfff1f92f6fb52b7889091f3077a8b012cc061864885e9927b5b7ef8346f36f20e45a7ba4a5004cb35e437bd0764c863e1d15cf2041100e6800aaeb45832ff11a2ffa7abea66b3bfc770b380d30c259bda64d046190037f59834abb5ea4f9ba5a2d7ccdef60121885f75ad23834a2ee4029f4229ca2fe876b105027f0bbbb0b7ff09e020242b7a710c3e1812c8f5a8c3e00d74b4a9d9168af88ccefbe4df06d4c3db2b3f008f8469c485f01e9810336b7450a18d6f7c8b6e1004c5e502f1578c567ba0cb68d49058c265037401ca8a10acae292ee9359fc39a1139894cfbfaca20cf11444c199c9df430c87d1407d548333a2047cb39e1a421ad6c5cfcb259807112664400d704cd095bd03dfcd128ce7cfab59b48423d5dc696cb4de5f41cffdf55737e428f2120f7f37b782842e4b7bcacd9159f703ab4c2e57ff45d45b947296a837d9d724f0076a820da6c25e8a25f0222cd0b72a993b80299bd2fd4f735c1b05c4e23bd8db309cbdbd31832c47c78323f32bfe9123838d0d57656554980712a49e7177370ded71f70ee94073d9c43493611ac40e07bf529c6f77573431d1b00ea6f6151d7d5fc25c480bf569b298ab941d4ec7d6bdb509fd06f4b799b57a4c93b68b13299fb6ef9039f7d8f81a194121f7d13e4de52c8721832284c89792d63db4cc507163bfb705d77143dfc5b57d77499785e9589f6ae6144d6322133793ba2114a6212ba1b64be072838023cc8165ae6b82398d07be773ac49f63211a6e2ce206db5ec9eeec4f079edea7636200fa68e8521d313aa25a7fa00e94b96bd0d83b020ddff893ea432b9b89d2858cd5f880bb07baed21363efce76e2a748c4b1ac8e8dedaa86c25ffefeffdc7703a180557fed8b477b74977744a294bf6fc21d958f72ec7be5bc54e2606647ffa00ebd95ed5260bcaac8bb5cbab66a1eee5485ed27d18f304653ee18c4d100a29af8969acc587b316b3c46fd9f422225b30e988248e7511551f1fd8b9053f2f0010d79b9cd69514d21abd634d47ca107493da70939d0b5a985bfa349963cc09371625e7d0cacd6d1c5c2671f341f0e8ab6c7674bd0d8b1b8ebc7d44e77380379dc75a7e0f06e30d49ad6deb5c1fe0e6d6035bda8d0014164212d06227d601fa703a016e82928a87d1f9811bc24a2c9dc7fd3c44bcd5a0fac1e8d721e82d79a25a8bd1372f290f16e8a6bd382cd7fb4b29a94611202eebea014d9108cc3f0b0fc218afad3cd250edf3889d9d04a6be74a56e2b377b899d02a059705f94b8a4eec14943f5697d96e651796d945dbd7490d5fd0d28ad00b5fa9197e4abc51a94c0fece9d5aeee95b86281d4bbe074b1895340be3c432fb10aa3a5dc018d162a928c9ca599975a2a7503d326ded3c24a637832dad6f997ebe4e79bae9dcea16879a3be90caf3423612046dd0fb4346e69412165c86cc047ffe8ab1cbff991c4770ffe613df9504c7d4c5838de4e4a7f0d5324653a5b839290ade75901164d5cac503f899359ba80c20590fcf5030028f28fab25297377416030bdc6a6f8f6b0a141154aee19fad7d648b78f36a45ccbb9e44884e578698d8c11efb4c4ef67184f8b1c27a018384bbdc4ee26c639371e5a7e2feb1a94bf193c8e5c5a16441d876d764632af7b7a1c6e11df3d3ff306987873b2318ebf874d94df6b4760959c52b09ed570a0342068cd1ea319af6dac005fb44160051154a046e7c1ce69be63175299daf1d1e6f5dbc93238ab66f0bdbc9ac06ad5a4396040d7f585769c2da0982ecd63bb7eb16befed44839c062163dbe18bc80119954fbb083a82650e103756cad5806d0f0b1f840e65a38812b376007b3bfe0031d58f0f67d5bdb8ea5ca3a4b09a8ea8895962bebab1995260823d7dc1e4219fe410e955bae2caf99acd5d5ff788953f61e0a6163f30b1bd9e8d7d91c68904d22b4fdc8479525256dcb7665dfa41e61c56b312583835f26f365fc504590100e9107ea5da5aa1855a2a08fee4c2481f22c3a7a7d71673a27093ae39213373f4eec94f3f3e5fbf7af9fea497fbf84e08d4042bcc28005a832f77ecf51a799efb4d277bb08dab37c3ec490a90b523ee141b6fc498669622aa31b0e96e8af9fc07a9c6bddfda683488feef4c746e95586ac6c62b25a87183d87de86dfadbf13f75c1e67fe78efce914bfa9f678f7bebbf10fbf9fe364c940f7a4fa7f853059d3fff5cf0af482f91b6f5e7577960f2cbb83a53b681ef3f4aab17b2abc6fa15705762e66b7e98d393ad0a16c93d6a663245da8e24de2053faed6c29b76fcb783fda7223a2a0c0668ef3df9dd1bf3bec9c5b6196cd34efbec3114470be4ab16e6caddadfe28033160cbd56b9d39bad8309d501c4df97a3b1875031e94ef527c541b0e542fce371fad7bf76b7c6b9da9f0a10b10773447bdfbbf0dc89f80e989576d873b2f7ffafef92f3bfaa3016ecf6fdd2f069a1cf2beb6f41919dddefe3080e5187ee8274ab8f9efc550ecd89d15a5097bafec9ef67eace46e8e7227b8bf2db5af49d76e1e3703eb6402ba5fd9b253c1157dcfa6ff74db0c47f4cfee27679cef24a6e7e7a0a468771ab0ad77e2e60f9aa0333e51c65f371ca7a85cc270d2bf71094cd4094fa0839b3e85c8bae5ece3a74094d79de3245d6052d6d46fe251030353538641aa57c5a50e52a16fadd1c078a437735b87336300b27f7efbfd9393e75b6f7e509aea51dd7a03e80cf0e1e539e69c35be2a2ca3d487c2fed4115f36aa405bbeffa611df1e71743a1d97b572be30ecdbcc8f97d4b62519d1e7ce08215d3d6180375b1958ab5889b493ba312dbd27676c82eda68e0e8b2541f39d56befd3babaddcc8a7c52a8f391d0ba67dc7e9fed8cecda06fd9090c121b5875b10c3dca7667e3e1a4580e7012acd8f310b1c704877cfde9458200ef090476993f3a3cea34f4e5ee8e356196cc6b6746faec144d895532a735129933475ebbc485816d9ed1a19ed036571acaa18f50e9ef0599bddc1f37fb1d7ab8df6df2f1377c0f03a94a0fd3a2acdbe070dfcdafb5aa6f1e62a830f934674712baff1bef47345e");}elseif($o==='jush.js'){header("Content-Type: text/javascript; charset=utf-8");echo fun_adm_lzw_decompress("78daedbd6977e336d230fa3dbf22c9e4b4a478a5bcca1dc523dbea6e4d6ccb91e4eef4d80e5f4aa26da6255143525ed2ecfffed686858bddce9379eebd1fee39b6081440b00014aa0a4015f0cd9d177dfbc722be6d7e1e45be97f8ee24987d8af79268e12f27c1d40f17c99eb3bebebe3c5ac4493895e4cf5f96bd79808ff9ed7c6feda7cbfdeafe770fd349adbabf0790da7efa533c8a827972192f4dbcd9cdc2bbf12fe31f9bf00f39be872cdfa715f8ada4981ba03faf05cbb3c5746f0d92d71f2ed6571adecaf5d5522d85f8e510e3574b97abfb14f831bd5c65087ecebf585ab9da97f83e1413f937fec33cde5bccc6fe7530f3c7cbf16238f792c48f6684799c3c4efcbdebc56c9404e1ac7a1bf9d7b5cfd80e58b7e6381c2da6fe2c59e5f6684f7c8c552b9858a9bdc6c76ae44f9a152a26bef5fda4c2d0e471ee372b89ff90ac8de25880587a137f5eeb826ffc444a8d0f1e07decda937f5ab955bdf1b576a17eb57abde7ceecfc687b7c1645cc5326aafbf2cdf0637b713f84f0cdeaa5d97f18bb5cfc96d10af4ebc387113efa659a9bc368011fcc6088afc6411cd2a3fc5736ff62d43bfc7cefffee7ca1265d79f71e3042a1f572fd457aee83350f3f9c41bf9d5b5cbe872b6bf76b35cb99c556acbdfadfd5ebd4da6297c3a05324813c0e887b5552821d178d6b0724b959fd6f0eb3f57ec4ab9f0eea4a46608e6ae09a3e02698799326820c163f0da32a90d8c5ef3f5ffd58dbff79ed2660845ee33bba787fdcc45a9ada992f301cca74a13b82e4d11dfba370ec57d5f7ac4fd1477ec62a576ab59a49a8fe9e5eced26f6bdf62d20fceabd9309ebf161482d91ffe28697efe42b1791837d72944dd125e5fc77e0290e2c7aaaf2e7e7f7db5f49ae89fbebcf4736d093ea0db284ea265467999cba97d86e2979a558ead585fa82d5539e7beb3b75e7b1d5c57bfe378ed33e377016f5e35a1c4d75fbeb131e3c71224ac4efcd94d72fbfa4bed3557c26e5b2b6cd5e0e2f7573f41a700fee595497fa8e5eb8314b6ac50bb0ea32a356193084f10087e868f072b2b80fa75d560bf145cd53e431158895518eef0a8ae2f07b5a54c96252b35a8bd1efb133ff1bfcd6479fde5cb37d48ed647b3cdc763e85b6a2d1db39a2043d7301e0c59436439f186ee7d304e6e99ace791dfac22df08afbfc5618b5c250a663795fde7b905e4adede10f5113148aa3dbb458557fe6bb6653f3c17d0ddddbac6123be06aee10d979a956f61347ec3afae67874e5363cf08035b8892e6ccbffff608f843b5f6fa1ed8945f0d7e829a487371c6a9978c6e9b34386224021c68a91a76d5fde6ca65bf56abfe00a9e94af5b2bf54abadadfa0ffea80a055d0457abc49db0ae44b0549a306929a349b08b8dab7d15d8abc040ae10fec0ed0a4c6ea5a245d15205395e9627100f328c41d00866333f7a373839b6385fb246fd28d5c556ddab5c26c0142ce606384b092040b98457afd67e07d80f6b01f345494fb84b6b307e732f34f38055aa69758d87d01af1d3183f5a59ca16b65441feea4f62ff73be1ecdd8aac90c5916f0d06fd77e068605a41f2c2d21ead43222fd5fbdba0f66e3f07e1558c14081aa86025688246a3fdbefd43e17dea9ea865e0675a2f67a08d2f5137cf28b612555147428f0dca9375b789327451df63072e9276535264285f061d53c2be1728512d9787193de2997d01e1469c618b0a19fbc58f3a5a52562495e8cadcd2a85f00603c21616118ce2cf52b8acaa426c395e0675258a5511959fbcca374b55c2dfd6d25ebdc2c77ea5b2072209330823c9e7b3d84a214d5ea5efa52945807898ac3c92d29ffcc7fb301ac792dfe2d850c8724cd55efbfd8fb8eade4741e2a72e36616d49897fca5643ee0ccf66e58f18790dbd5205ddcffdcf2274a141510f74e19f9ef17f26ea890552d28d024e63150a236f34e1647f741baa22825940c1db24e1e2a65e30a93d810ea4d70521864053fd67e23201a94c00913cac53613bd45fbdb2221794f38a4973114d98d620104bca6ba55fc6f566f1bdd7b1352c39252b1969e03bb650f4a21b227d45812b9b201b1d2d1a75f245706529b7d0ead82c7bd21880e045b0e25cd5d2f43b15de57813d0c803a6ad8c50f400ac031f45bb5d7f17d801c891bf5f3c88b7dd2eaf7e863a22aebb71d78d7c66b35098fc37b3f3a84d7aa35c51254212eb098ff4a41400fcf94032d122f6ec338985dae4aab64daaeb66f47f79efeac29d845aeba5229d608d8d54b6ba4d37ebffcb0b4462aa75dda1ff1ffb4b01fababb535435c4458cb734773abb903d53a871988540b949ccc97917cfe7eb7e088faabc85f0eabade341bb971ef6daad413b3dea75cfd25efbb475d24efbefba1f601ab9d43f7cd73e695d0ed75013fff6a835681db4faed4aeda9ae8257d2d2ee020441763d47373c4c8b14534207fbcfa76788aaf67cab013ffc1fb57ea6ca32872916fd7c955fdeb75814b08445fc5f18c0377f81569ead723568369d7d68f03d9ac0153ef2172a5fe8c2ec98c9943d9a5dfffd56f823feebc36515715b33fd0cb3006f31495e564e4d260430ef99f838b9505aa1370fb4b0e3c41cf8420b5240faa5ccb306132f518d982539acd53bd857aca85b4a0b2b497669cb55c265bf22087fafb47bd0e9e3b93f0abcc9e8d68b625437382b28ebdf33252c59c3b72055617af16c2a96805a6ccdd20fec9532dd56b6847f2ad785739511fbb2f4c193f167d0a85f61f7c80a855674cc3c5896016a9ac9f3545f2b97dfd222d5b36dc65d5082b2a520547e785581e93bea4ee7bdce61389d873354c7b1263839fa3e331be3c2701e06e9a26d52332a1c41f51c2e82c9d8e5053da3788216b29c440eb70e4ca02f407f322b7ccd8b4ae54aebe99f607affadce1cccdc61e435af3d18ecf63bab73c0a8faa9267347c87ff1e96a350e17d1c8b746c9e56a7a59adee7f77b95f4b2f2fd2abb47ae1adfc7985d3db1509d6f6710daa4477e3479d94335ca868561999fdca1590e105d0e167c1ee3b7e2aa514b256aaa88b96a04b59b87c504719ebe06616463e0e2b5923c1c2ec9ecf8ebc25866424bea28c8bca12179e7b4503adb796a01e4b8c4b1d98ac7ab55ef66abdf82a8fa36ff28b2b5c53a83f4e486a9485068fd51817400e574d0bc00b9fb20acca9385bedf937ed877915cafc230c66d54a5aa92d576e2a99c55559f5cccd71625e98829604256ed98f47de9cdbf63bfb4bb2022b315cf2d334e83f121562320e6a0ad8a4cd14cdc98430b2149abd3f5b845d455ae8edccc6fe034c4cbf30ef663ecc55e0e1aa3986431ce33bf54dc5a4b8f92f78a29c6303559a262f733957221ee0051c7e665a0233909f329fe29931e493ae2c5b961114832b5a9751a287488546e40897c2a56ff073543989bf36ab52ebb21845b19fac05bc57af98309b9966e34af3a213d5ad2683939059bffaae49eb49b86cf3d3e55a95f733525af5affdac577178f1691d46fee751384b82d9c217fcb153a7d9d6a1ccba6168014e0d60a83d4cc254697a290d0a6916285e586f7025157e3203f473b30945c067e0635fbef94a769579ca7da5f0aa611fc2db6ac90699ce779451e8a5c24dfaed2c4cbebd0e17b37165f9e2ea8ab9138f9a57afb02234ddae141a2a5c244d1c02ab4867ada4ba5e839caeaca08f83bb2086a1286d1720892f557569eead3749ea95fd5cc3e142adf07224039684c1ec8669635915ca99e6917fe73e335844bcfe8e8b24280c537c7a737ede79f9b505a036c9fb474c5946313f71eaa4f39a8fc2e41b2666f18f7f78771e13d99e22ae1869d2a6fed5c52cbe0daeedd7a11de42395fd0afcbaf328acec1533d0c46d5fe66fa89be1f45d0daaf2cd1ffbcbcb9a29e4764ae2da326d1656ed8f41ebc85a53419b80a4bd4c5e68d1a7f242d2de93295812eaf1c429bfb51670b011a07e69aa01b36bae7e16246b0306882b3f3211c800613ae39a099249a26983ab270f4f741545ad39f8c5efeed5922b73fabfd2033135b455615d635948b351030876420dd957f5ef2dae7d754dcda2e5af92abd24a37ff27e48783781e83ecb885e402e1a93a333179e3b1e42492cbc3a0b96cdac9339427ea4112e1bfd56b88abe931ec3fe8adccb8fd23e63555b51ef9ff119c900abe86128cb6bf8bd3cbc83b839c5a0bae0053cdbcee87d0a9af5e95f2f78dabcc9b325520b11d3473ca0cc9eca2c008ae64c7274be52871d697376adfb1e4b391fdce30bf1230d6ad040cc2069a5ce4f037161a15b58177dd2c563b3f1ef6fece8891becc8d444b40be50e8712bdf3495be152ca1aef2128150f2c657c4cd5744c8eb9749585ccea08598ff12337b4696daf347a0213d7bbbaede28102ecc9ab162507af5cafed257d9f1ff648c2e5fcb973fab97f25385d82af6a2ca33a67d7e40da1e54b3fa1d687da0f03e4d34298bf134c303539bfbfc3fbc67b46f37c5dec515ae59fdffcd40cdf04ddc5415051d3c339e4c8273a598477647516f24bed6b3c498f84c5673573afbb23d11c8cf97e0b5ea54223f6dec57e3fd9209673837f64ef92e2be924b3ab8f8b147bd529d4e4ef158b25d4f6e8375bf80bdfaed3dbf0bb04918dbf8dcc0615b79147862d8568373fb3f3696f7cd2dac3ab57840cef0327de8d900bce10f3666998b1b0da64ef4e665f7ff50a4746308bd3b18f74a8e6dcf8b9fd62597b02caaca2d3549c280da524edf2278c0cd70963536f0eb47f7381b9962a2bd2700aebabfd9766dccb446bb955c86cab517bb1da0925570aad8a6b796c3fa7be257873abd8dbb89fa09d2957d3caf65a2afd49995a10aba285157b0b5a7f8bd641a865c9e086572aa77524d2cf7fad77e89d7d7ae4fb4760990efaf28dc6945b84951da3e87ce12507a3a24f69b295b76fac72318c55ec4faed3b917817c25a53118a5e3203248925de53e995ef0ca237e80dec7a5faffcd31fe1a8dcb725618d5dcbebc60b2cfcf3d634c404b7db90df965c96d6f78fd009ae2daf213a5b2b1aadd097b5cc0f25f643f5497ff4d16240633cf2c1d4203d0a2218a0f517278711ce8f3b5b52620cab0229b245a55eaf1aa5bb7d7872bd5cb59ad2aabd7d07b4b955af5f53ec0009be2c2ad51b29765b9ac0e3ae9f795eff73fbbf5bd924f7d2900cb563078612187af821530bebcfc01dab96c9dcb1295d0b298afbc12bae8ca72f1737a313ad79c380a15d7d2a3b0a694219bbaf3c630050ace17b25459ad2cc5591ac51eb6a821b66db14ebce476751aa8f57a510096913a948aeed494c9a34550426a8674c27995888e17949fd134483666be66e665cfafbb97ad419bc57bfab05dcfa715a6a757e9f37450c365b2bfb246afdb452a03f33d9a37287bd70bcccbdb28156b4b60d912917b9f2b1e4c24662badb3b3e3f6008673e7e46d6559809d37bdd6493b0f3c3d3bcf67ec1efcab7d98071e768f013238b2016f7bddf3b32c7470d03dfa9803bde9760739d0bb7cbcdd3aca817a2a3e845ef0a33c562350b5570e8ebb87bffc7ade1d60b57e55d0a336a2da39ed23209c84d10a1aa4bce99ee2dbf458ae5cc3502801dffa380fcbb58a000784e13b03c86134f186fe64e5a47d7a0ea0eed9a0d33d456838bb1903cf35cdcfcfe5cacc9bfa2b6f3aede3a37e9b51e89d28f0a0fddba0d56bb7007c703e18504994505e8ac184105faec451c907d15471454a6da9f871e7f41789939972aeee0ccbd59481aa3dbe2ce707c4de5373698e1a56f40acd255e7953b4ddb7acfe093a4932407202787583c0d7c52fd222c5535f2ddd615799cc17bea72f40414f7d039735fee6372af48d7f6c349eaec65fff0c190bbce453d9958f97f7127405192ddbfd815d81c09f33406a3d047f9f01937b0639ae2cd6d75beb99b47fa0b782b812a50f55e386547b5dd8d69f3bcbf3bac6b3cf785e47e1f410dae1105773e6cefedcd9032534f63bb3a43aaf2f3bdbb46e637d11e98d1a871ac65aa37b69835c5e525d2e7fc897f06cdfe54bb9b8bcac5c3d55d073f45c52d0f7d982ec95c2bf50ab2a9654b9aab1530da982afd9c43c6a7e468c3ea3e7194164577e0fdb62d975f660f4a07bdab3592a9065144e735930e5f2c7cb354e7467a035ef7dd6a1b54b485cb333e1cb9f29beff3344f10b145d854838f33952dd6f82fa0810f46f6308c650bd22240d5eeb8057c5e08739a8a6991cdf7f6f2a893940a6ebef5cfceeaefee0adfcd95af93712b17c06578de84b251fc034fa46bee8a12775f93f18893c8e5cada96e40750e8d1c28c256e699585d475123818998d7ac5abe242af8ed35a85767611c10dc9f2ce3deb017ccfc48bb3529cf29f46fda5bfff2da7ea3e78f1630bcca5e5c86ecda3f07c2a0dcc5a0cf947e5815430b57e525a1f64bc9ab3318db0374f56b6e1868b3a9df2247ac557222e2f71512b876fa9adc8b38958bc3e6398477d18d417959a9f940b1e8acff81944feadb93f559a5df53c09a2ce5cadb499bde30924adf8799f4308299f39d99390bd6c66b45aa83160259ecf25fcffb4afc2d8c35eb6084c5a560fe1234bfe4a8a04ba5220d5147abb5769d621119d120fc93a15a492159427a01dd9474ffcf4dc155a1f25937c01e97cbcdb027d9be189a5af90a4d7dfe6b1db4f6fb30ca3568a667ace6c5e9d00bd10e6c84575e5b6fbe7a15349b4f20b5e2bca45cb3c815f9f16292349fe89a1c85d1100044f8254d021ca50528abb7d1a709da17375194c7e2d8b8a6352bc94342e6b29601d24f8ebff902b7b81a7bc21947b8554c1e08ffb45de2e84bbce2b0afd61df6642398175451c72af37a656fa7121f309a06fb097a4a51d5b00053bfd7d90628c9453d8f381b872b4c7c4d8e8130bf551e6d26fd75a18677de64e1d3c23f6da76289c6bccb1aaaf865d5673cc3e53e87fa159cc27a08c4992b3ed121ad8f2ff06bab86b5705c640edb0ef993e60d64f727be482d681ff4d19d86777e6b32a182638182bac41fa2cfd4b24c06a6efe3f01ec4db1da055fb4c8f26fda6a938ca510cabc39956474934f9c57f4c538e4efdc4fb85975c19e04d128cf356757c0e6534e54df8186a9fcd66436ca082b8e79724ef36a8f9f8e534e55c6c326a82b4c6805d849980572f393f65407aeda3907189bebd40c4326917f99c57afd580c294657c83f8178790f6be6879987ff7e7e67af1d3c0535efae934fd4c9ee7950ad1303cbf3c85cdf3252d3957ab4c884692b295b1da22f49363180490950aa645267b40a944a06ca1f922f521b1230122851d868b5986ea3105f21311920d9d1824d0d883929b9623308f539590d1c07064f148c12308f4e8d0a0ae0c900c7d1b0e83af838c19f9a7fe3d368d3d7ead6fbeb6bfafd1128ff999f17eb5780599124ae4bba6cd54f81b80dbebff4ebb41494fb5095524df2a04d4edf28da94089ef30f2d96af5a74b71e1adfd08c17d50af7e0659f01d3ac45b934c6f32590609c4db6f2463e087cc388d784ac8233fc374cbbeaa94b8cba13ac440ce49c8cf8b09b5f9d9d5e5504fbcac622ed7e6aa84ea0fe94f3a522b29afca05a21fe8cd74b9c2c245cb4d44d9525258c42871603196a60da37186bd6953589a7e57f25e9adac08b5c295748c9df359b223a32efd30ae867e206e5e28925c51e2fb043397b1974f63535ef11ebcad68a19a376cc7e064144a0598ec0ebaf56ad8983212f811673987699912a5cc86499c370f25f24a244424d82f930f4a2f1919778b52283838c5a12a33e73184ea7de6c5cad04b3d88f68e4569689472e972f58957c06472a3eab74ca0a7a7109aaab68d102cf23f671a26de56c5d95759961cfaae26a7e0afa3debb1525f9b8b289550942b3cb6e129df7348ab70af8f98b8dbe320f18613d06b22e93cadc83581f9e8c8528596d42a9485cccc5779b9b95971e60fdf62b325dffe63341ad93968f9938b09e05b1f30ba54993fd8797889d8647a47f17cae39a83001eaaf1b5938283bd1f524bc6f56bc4512da29c07f823ffd66651826b7a4f1c217ee236ffe5db3027a54850796a0791b247e7f0e9ca1890db482d92a6cc296a170403243de683e9fa3f0e68a43a070266a55539e06ba9837e9572044d94dfa25887dbe4eae17110f9c15605568b0d56aaf33d2ad26f5044a9d009dfaa34f2058898a6b9f75592a2034616716a5e01b288277a74ff98c021c12073e70129ff82390626600794085778ac6e08bfe04b7b9af83085e795033b4997717dc784918ad2ea0b8d60d8e64ee846b2827a64181a8538f8c831838f563b3320b677e45af9344801cc814c82b8b6dab309d696656c9f43adcea1f713665f98f18f714f7d62ee31f2fd740a25d5caefd78555b437838fc83e19f294a8bbeb410669546d05c91b838b5f6fd1aade7ad55b8a8994f6b716b148336e295395c9bc3253d59a6c3d5362a0502cbca7a0a3e09a2ad4a61987d4d66b5fd5af5b2ca28f25e79f572b556a5f9e27f16d0aaef7c0f86608a2a821fcf43e82886c86bee06bcf11344d6d874bf56056918d02adac5ef9757b52f3f5cde5fc657d96ad2e75fde74c6eeabd86288f3cb4bd23663c582cc47fe52077cbdc12fabd04a7578d6d6bed22c1abbff1606dca12f47004a6d962c08cf9eeae6cccbd0e6cd27169c3915fdf0207e212bc86be430f863b11472027c66e93a8734d07ff3b35993b693bc28fa6f352514c5b8eba1fcb9141b482b92237f02c9d17c85623f5279c068f7d6f6a459e21fbf10101878914821e7ff7a8596d3ea7ef34beec3687bf4dff8b0acd3efe9e27119ddb004b29b8ff7d6d6c6a0cd4cc2b91fad4ec33f83c9c45b0da39b357fb606bd1daf1d754fd6d0706215cd7c2ad98288215498f2d7eeefef57ef37e8dd416fedb793e3770017c6b6f68fe4d65fc11256b0ac6c31cd8bafa3426f2d57fee5dd797d1a146b3dffda079936f2d7de4ec2a13771bb433c5a2b5e8379c41319fb683b40cecc2fcb041afaea2ab9b1bd2073700d9951d97e41de247a84cc235c4b7b2a77171a01c56bbcd6673d9551c6ded0825a437c91fd0670978982a89f9a182988262a1a28c55fd2952fec865614798fcfb4732e3b9eeff4f2dc6f449f7ef91ba78be9d08f5e9e9fed9d5e9e9ff76431ff55768c20cbbc500dcb073e85e1cd0435f6e9da7ced8f1832ac246138f91424d0179f82b5817723e44e5f3ff3226f0acfd6e286a887e157d6f69725e62b8a382a7b6bbfb3ea91d22f681f3fac7dc9bdc402bd32f593db704c6fbc4017c91653c701cc8a0e37c165665f3ac57ebd5cc5933a716b3a3d1f1cd652b4a022583b3d3eadc3bfb39e1e77dfd6dbf8ebacb7d3b34edaffb53770dc3a3deba9378c536f14c24f1ccc529894f14f3d1df9c124c504ff619ec2cc218cd24978934ebd87740a39e7e17d1ac144309ca611fa8aa6f87afc9f2849e1ed5a4a349a1e40e3fb5022a29ab6a308ca50f49562d7732e0c1de2f48942dced143cf3469fbc1b9f6a953299a5922c4971cad494720ba59d194cda8304caec774fd353ef34d51379f97e1b38258768ad48828af638da7f9c25de038771ab8743e7bd0e07d8d601a226a44f4948f5c10969f10885d4878fa741fc0671f421800852efbd99845e922a1b83b44a3668a972b04d81cba46aa29bb28e9ff2994d69721b414fe0d15bc44e61969fdcd6529872c04f709d22db8410b0c59498627a8d27544e1e310b9d9b9842b7c1bc053a6de487d7e9ccbf4f719e9df22164e95d188c21af87147988864f2964bc05e699c2f40bde8fd3e10dc387e118be01c409931c3feafb09a03f9d7bc909d2aacca1b131211c7e0afc54ce31791fc017c73005bd99514e1865f8e93437f982f8d403547d2082719c5ecb4791fdc629cf8cd3604a14114ce7fc8e47cd85eb8b5072701d000d986ad0104be793c50d5a3ecfc3f9628e7338685d208508088de6577d3c17161a038f1a4991952401673bef1da777a6349abfa72320f628e529682b018a1c2ea081397e24f5791379c46cd2cc7a433676da57f13b9376da076e114e601a9f5a3b226976c2aba291ef7ff0269f202f92dc02879fb578939a83f10e1e3b76343e78c4350c6cc330e2128132c75df82acc3253605fd1a314d29ea1b01b676068fc089d3fcd00493a6720ef714a9e6659684a67d7518bc5a9d9d64bf5ba4a6aaf7a48e4d8bf56c141384fadc5133413075a8fe2841608d200fed48a2a6dd4115d709aac354ec29137a12fcdd44f8c4b1d389667d0befd6038411e831bc09c4d768229c075e28d27c19123842307cfd8909d2388308718e1f01ed05354929a55055c02bd0e1ef07117848b58a10133987032914f71843ec5412c9d435c3a5133b0e621d9a7a6b2e39b5a8bb7a9371e13bd1d0731c48174ac059674385944d8be23e04a13606684192e3e20536132a5d509a42543fa7604883a13c502f200ce5338b3b11408796fbdd87ccb8ee4d2628c1d1a9ab2d7695220bf29f46034051ef7278e7fda17d4c5e6e250721ec25c0361dc541cce36a5aca77306ee17e0f32131bfd86eb138db6271bec5e2628bc58b390ed6380d67d44b213068620d10a00e0b67e3e14405b997f4aa1b8780b662012e802a6753a0335f92298c35526174755341e44612a617792d9104066e6ca6c3c510980408894592002f1ea194991c1050221e0569e0fe26cf8fa9da361d2d221c06032f020a00299178a09390067e063d8a3c6d0ed50a92ae9cbc2c198318952418e18f7ef41b3f3ea6b2f79a86d9bc739019bfd1ef47e8a509b0aab1a44037f9feec37797e4cc9761a4b48381d0f4905de369d93ac4cefb02f4106838c45f1ce630243f08a899c605399e87987c37112cecfa210d060a1955d0787f6947948ac9815b1286f34f2e709d615c822f5583d00b583f021f5031905eba04026c36990401d71832bad8ebc3965276d344dde8421a485f720eb0ee035e832b299b6a43b2e61835238999cf10a3385712d18c3d711e2132db0afe3053079d0374426b240a2afb0c6c16181d377054e61861f0a769ca2623c6e7be1bdc021843511fe057c098896540d1c5f3ee828a3e8719e844ad5e8d35976281940830432005c9596c11550c29822c03460f4865011161ca263609859aa253658d190c010480f8a59e05324892ce8a630ff466ec027018b90c0301748a4c83b904c903a4c6203a6ad7108848be5ce3f8d62c711d24c41550e88e35380a40085e41314e64f90edfa1110cdad529a26987b1e3cf8130603214acf319b82afc5123cf11e7e33c18f12542088a3b3561c8c7dc4900f0e940702507bc2274f8a81bca02b61aa110ed321e8f2e93009bd14897211f1f888599d0236e947a836534c4e21e6bec6ae06113f4dc70b1884ec8484faed18d5c27b2f1a8b7c411365e81f88a0260eed0d2a094a437b6728bd0da1a790cd1d3cd26310526fd1cf51e0e1d4670e530c682b9883cd711c013eb14295f91ebcca0178991b451e90a002c730178975ec8c345625b291bbebfa9a3397532e52c969e41530ad91fa2ee6631c2fac58210ff760a826c4fbb18980f783c2398e50d900d2c3e94b3843952ec50d15ac0f316d1f9f82324e48b15530c03c239c2de81d186cd9158b5aed72985e0eaba03ea7b8e39a22dbc2c928f1ca34464c6264d18027fbac639fc13049d1eb248d29a5cabb81d41f47a064c2e3cd02e809756908bf0b1711a91527c16412c430e3c27a527c46b21d83d034b7dc9f3a191b4f3dff84bacb600208cc94d5f728f82821fbab10d51f8670fedb04d29fc798c200c20a8958ea155b158a5585e25c856253a15855283615126ac0a7423fce221d5b48c745a4e30cd2b185749c413a09b170994ea3e71628c57e096840d24f40990816c666e1a006c02411679e93094e424398a9d34418c613647c035c07444f7806fc98cf71023907b39414b7c190b1d3395234a7c4058f96261e72e5ea5ea7dadf0ac384150e70e0962919d329ad0b6ae845106572437a4c5276ad4ab58795ae977655d310edf99a5a8e6ca9e5115bab55711dbc4a5721e4167068916aadfafbc5b79709de7832c39c3fc20f2e4f7f8637ff59dddff364fd29f51620aa49d89228a6b90f561aa7e70907a205ca2e138e95748327680d235460703e4d8b6aa40f9082e13f78382d06f6e883067a1d4c7c9cd391cea21716f8c841167128dd801aa638df8ea079b353221449de1419e21d5222b044688ae4117800cc4d46d0eeff5980908d65a902c9cdc7f5216c7d76e2a5558b581427e018dcf9ff544762621866268802042f3fff931d5bab64cfa217f4e3ff4c9a9f69b57e65e5dbf41fe9ca0ad9e8633790dd3fef90e1f2fd77eac2991f73abfae6a828dc318c7fac55fbed017627de6b51ddff0e4f25ee038f3b7cd7eab50e07ed1e84cf5afdfe876eef0882d0776f8fbb07ad637ca1dfeef73bdd5308d6f607bdd6691f5ec0f830fde7c5efffbc4a4fdb1f2e57d3eef1d1e52aee2daaf3c973db230adcfcac3c0b705b42f910e056059af4affd9fb5e5bf5f73f43958bb3cf867c9eec66b64eb8377edd3b47ddcc7d5433aa4f9acdd1aa4475de0faf67e9769c4e7bac3fa30e4e4dda2e69a7cec876c0b4886bfd306b69bc732ef1ce2673235cd7fb349ee13795c48832926a9766e6a5f106b75da6a12b5403df6ef56a78f00a4e569600b6b14d35b30d9b7cdc2f6d7de43ef46501956786302cd6f3488b72332201cf11a02cae4e39f7e361bebdfd9d204a618450e0ca37fe48f416dcbc1894be760659f02fe7b73e34739a88d28aa2fd9e20892296ce8c3ac6e0538860284c0fea641be7a2012bc20d73278cf4e1279b3d8cb542fbe0def5740615e4c677106067a3f2a711958063b8250b3c42073e22403677aca80089b2c0886669081fee0981095c1fb52020bae8b30a82ab464110e6203a568be3340830c0ca6de9d3f07152dd1df07f9fa2987e888279ed0462031324dc713b59570b6325ea0fa87672c49d235e82bb8eab4c2425981453eada07112342610818d32ad2447014c7f5642b57b4769ff50519736749ecea76897f379b347f8c84a0c3aff0aa800b83619987a81b65202f51fa027e315d0b2576661b222d162be9b285ccc57868f2b535e748e4cc792a6a18751690d248f559167b3b303fa8b531848bd7903bd32f95a6bd24c7a05cdc69e4703504d6ea73e48f6e7f38d40617b3e074e66a88d7175259f35db892fcbcab9c66378015d9b41bd88004bf2530e4503d24c2553606916e99ed23462cb2bb8220aeaed0a14e66136ddfba092defa53d47e20f5d98a0533dcd6a0b584e733122708617ee70b4fd2dff2238095a7015d2564108d1561d3e7b2149b6f6512721c319376ebc5b74f943683e1fe743a5a417c75ac672bff1c756673968fbbd23c4f8fbb6cf69777e65f20e8b2d191cdf130fdcad786c1574af067b426f655d27a310d4e83181702bd991f2ee2e7b36acef86c2e9db80292003af90e25c98d0fac3a4136bb32f4937bdf07ac08bf7c115e3c0c665ef4f85f28886c93ed6220e30a4e4d9150d430a725634a55c5a92f8c56423660f84a256f41468bce33f3ef6d0471b79fe50c7e31542a47be55f985c715350bfb0a91e1a7ec1a907d6c69d608b595827c2b13e0e6459a78670c35440dfe0bfa2c4c40c3f17085e698b89d28c8c58f3168454275c46b4793458c4a2dd4fc06f2ae84736e534a1d2bf1c27811a8ec655c240878e516a9e41a2209006360735aa5f96ba5c423e40d59b1509a0f7d0fd05fbe34275417f4b69c22986904bb2c5575a6fe1590ef4f22fe92d7bef699290e8fe86579e309289365d8c0d73871851731e3bf5ac04b3ef915ec9e2c1614586018cf651b0637a210bf28bb5dead7fbf6251941f0b9f32808233c80c334e14b5e9d7a0f2e2ec1bab8b4fc97f08a27a595bcc18d0d6fe2e6acb4ccfcf92f8c7f850cbd584006a088cd214cbf1f1e1e5e9a3d6fd765af59d00430374dda5b5b5dca5963e1ac9ccdb1e8fe2abcd1385e3a6abfe99cb67b722932bafdee03b4fdbe7d3a48ed7cddd363c89762e8cd1b0cd6f639a1f3f6b4db6bd35b83d6c171bb9679ad75fcb6dbeb0cde9d985b97cf4ff99b47e949bbf7b69d0eda2767fca62ab204274ee8ff8a0b55fdf6e13994f911820096cc69e7f47df79776af4698bcefb43f2022a7ade38fff6ef3cba75df703bcd676075df7a0737adc7d8bb539ee1eb68e33d8f3b55e5f6d9d17e57c737e4a6b682fca7cd6eb1eb68fce7b79249e6cfaf3d3ceafe794f0e6fcf818cf47c270ffac35e8489d3ad0d6bfe58ac3f6eef65abd8f7fb1d6835ee7ed5b68e01c72906da9d73e3b6e1d6abcfedfed74bc8fedc986b3dac4e42b6f91f6e911fce2a155279dbf4a43d020ad4eefafbdd36f0ff8055e91a5aee41559697eb3220b95e8778f5b123e067a3cc602de753f7009480ef4d261f7f8fce4b49f49ec0fa0ae6fb92ddaa76fa159543ab72db54f4abfed7efa4bfb63bf565e38d16bbf7fdce90f3219caf1ef0f5a83f37e7949d404fd1714f2bed5eba8bcc465841ce482bd94efddaba52a0d1afb4de7b88de5e1b96c1ade6ff7de03f9a8287fff0c48383d681dfe727ea660e9610b4a544403b1e3635c4a3f7d8bb093565f5eef02b07df88b790b63fdf31303a011f304b23a318fad4e107475dcc257c3ce21537ad43e6ee39584edfe61af7300812e5d4ff8c487258999bd4414c75271cd9414208fa48005458959082a08730f15656c398ce3366dff062ca4739abe393eefbf4bdf02b10f5268e8a363c8f7ae7d7c060409af0cf031805e40cc8ecf8178d37f75e1e7970e74cc71b775848c04aa8915e9754f7427d9692acc5d2a91df4e8ed3b3f35eb65fa1aa7db9d9f18916d489dccd3a4ad513ae084f18da061515ed1fb7de53224850a07408c0c0b4cb42d696f6a1470f0729bfa2766e5219adadf3c1bb6eafafa2c05d808929c40d10a2aa9b35d86c0861df0d34b87bcc7cc5004ea1eb0ece07d6779ea5e67c1eae4d1e4a7d6e784ebe14fd2966503ad6eb59681091e898ee3566340adc3d6b9f6a825440261d13ed75de0349bf3519108da3f3e392f2a8d7e0f9aedb1f1480d9acf4cd229407828e7f68f54e3ba7d25fa91003bcd23334028471a62320f4f3430040d061e76747781d29901e3047daef3a6ee30b207a7a98f0e15d87e44ce70d6d8975deb09cc21db1f3d3410725c8a007a3df280a2498f6912d0b3a960c4a0fdaf8e9c3eec9496790f6806c9073625ef8e6198c4903240e89f8ab14c8452a416d1fcfaad4bdb3cf42104526ee5a0acde70815453276e8d1f9d971e790890964148e39aa3f5610d30fba5da83e864eba47d008a754ece0bc477b9dc7c0c2cf5b3cda31f903682b10066d8ac60f3023a828eb6d30c6ba6ee71428f784b5be4e3fedf4b134945e69f5a03df8d06e9fa6a75dc456c53a0ad0a1324e3fa6fdee09ebc6f852fbb70e920f67e10840050b6cb7f3336c8c2ea84df8a9e3ce2fd4a9f0907704c2911e90ee6fb8bd890fec55939a020b4dbbbdf4b72e296e2d228ea3ce7b449cb80542cf7bc0b8062e918f8a80d6938d000d9c0049a1da42693ac409e783432e0003944105289dba053af17d0babdf3a44c5a1838ca17574c4623815653d6df5e1ef10fedbd005830e50f041fb0d70c6f4a03b78971e7c0429dc3f6c1db545109bad6d16bbe9e17117180933327a8206048fd3a30ed12d84fa40c748a0c8db3aa7e798e9f43d0a17b9d1f7b0d7edf7b1f27d6839cd9a54a00fa18feebbee798f02271dccdec60f48fcf41c45300415b47d78dc4201da7ed33a3f1ea0906e7d6c1f9194861fc01cde0112e8400c1f208075a0073c812e183e3a07b6d0066d84f7b3dba754cda314ca689de1f33718866f5a98f6a63d806c6f40b20d36f9b19b4203e23f48236c4a603229cac754cf1b5896bf6bbd075694beebbc7de702534425fe638a35cdd45200544d0a0b9c6782a9d21f514b8007abe9dd7312ddba4ba1f91dfca9e3cf06fe6ce2cf2efe7451e924c51339d8116274dc7e33488f3bc86a508f6ff5e8d127e98d94f80bfc60b6ee0783370b04171454173ab7f306fb037514f710bbfaa4858d74d239020d036981eb93a9a78054ac7bd479d3816f0a17494bf47a640929cc3550a002a9a1ec49d50422e5e36fe5016ce0238ccb23681c6c1af8e71035da59af7dd841f603a1ce090cd2d46861a4a4a43da27ca0d623fae9d32fa303c1376d18b530c220080dd8577a093c7e3deff448e700290454d66b43554e539048ef06227ae581dc17ab9d6910d37d7d98df805001a292d9263c01e73740c2305dc3fff66f876dae30445002b63120c20e83d0666f5dc004470446819b1cba6f90e3b940f47d82f54fa09d74a6bec8452a00873060ed92fac73a060f24f8d2514a861f404898eb18f32bf513241c8a50d08b65f27c7e4ae4737e8a9217de3cef8358805f7c0998d539b4224c3a0c8f81c8474cfb805f809f1e0b8f94db1ed86cfa11c8d33d01d6f22efd77bbd7851e3d463343bcafb55a43ab946180b6d7b347345e1c86e1847ed0cb2c9e7a930942a7fe38584c03b2b1a67fffc68fd221da7d27e8cae6a13bd16238f181f9cf95f19980d2c8f726e8d8154cf999ca9e617a4de66a555c664bf1073774c8083c6623708c3efa5e24966be893454f5e5bc5a88410f9e1241c520097d2538e618851a73807098a273e130c0304f101ab942db9d506404a1bf6e8d8e48b4ddb3c9c3cde40cda60bf45ba2540a5a592489f3a99246683ecd07a6a4d56938b6841c6ae6288c66b3f0e8203d79ecf45b27e949fba40ba3ecb0ff3ec5be269903aafb2fef408790058b37ed2352a3704de0a4f7d6e537217286142933f103541e686c9625c844b9003793f442d2bb56ff5d7951c8049fcac0ea1be7a16933f05265e93a0abd891f8ffcf486b66c627436982d2613a232b2db45b3e0847cef826b4ac19fe01a8d21e351102039c07fe28af9389108fed80072a1d300367ae4877b4f068177a93f41a33e74fc70d1ac55d9f5cdc62eaeea2284b6b5d25bff41ece6c9cd2f4a277813399b7d6b0b766feca249209bb0e3e31e2d00e7de389d00994cd3a9f7c9a742a7c1380dd1341810d45508a331901a9fb295e271cd3888d0f6441b602ab3e0884cce232c38a28263741d050ce989e7e27f42034db2d9cc1b68ea901bb00b13bebfa0ca2c6658cb05da63d6f0beb868349d637b3fefdaea07e447851946e47830daa8c380878ef5334eaf33f27b85ff3afe38ebe93c20efd739b552e48d036f16932facf684bd9965dc6153657283488dc7c441e0491c433626dde44ff476a124785292e634e3e0fa9a022ebcc501e95d0a43cb40e011ffc94c139ee1f5946c7b2978effb9f3884ec09aa962081a5b8bde80238e6d062163c246233ad8abf0d171159d9623ea202c2090394751a8ca2902d8cd129181d98f8bbf4cb36a3d852c03fc331212f41aad17f165e94a0a72517000f37095d2a18fa10c3f435a89e7a72da634c71cd7fa9b02c23a6107e4f47742655370ac3376234380eb921384a76d0d81cae2994da107fb021f0298da97f10466e3571a2fa94cc99a9ad698f554cf51fa6680b8d1c604487d80149f8b12bfbf2298641e850188d11c8318bdd8cc5a1188d7b7596b1f5aa7a4ec75b693819bb732f8eef696caa407cebe1bf0395d3659ba03f96018de84161b7532ffa948a911720e347a36008632679443712def64e8ded971b10697a431c91747db04b36be443ecc81300bc0b8e2296f9342b7c7287e5d3cec28e50d280ed38f310e5666ce489e688c06ec0c425e427e41109aa1034910bbd7307e25438c058d39c23b962ef029f7de030d0289d3252b6ae5cac1f9e289efcfd3c50250c51f37be452706de24c7bebabb21ee8da31d9f68ad0d8f0732c95e909136fc027de3a63d0c32b279708585a3df3cfacfc7c918ffc7fe9d3c5c74a090608ce4168374c76d2b84e39380b4b5351b1117113307606df79f860420b500a34852d3612467a2c62984019d3f58fc0fd1361ba414044862c568a180b1905c7ce7144ec205f40d05d19d3ca06ee6c270bcc7e838a54aa4e2e2d42a4c97a48ae13290aa16d7d77ec4c3e3e11665238e4af6bc37252059c58f5393849d0f037116b37b1b9f63a29515b2218f23e8af21121d364a10fbd37982cf989cc1d387f4115e1cb30a74a35ce81653367164c56996d27e3ce709629239412c4e6578a819324ee45e1127cd4c648665d90068271fad9382b14693f218e30ed1db702021f7a5ce43808ea08ea623d36c8c70b4a393471dcba6659286e3692e9e89daf80051697430acbe8fe16926a2bf27312e102399143bc1c283a376aca883a67975b5a8be6acd5669b20c9218b475449e82ec15e2dd20252719af8d20bfd38b1bc3bcd9cb5e112e5eb50443da65e394941f20d2d035f1ce77d1b24d14139d34268dc89bb85360697398a4d06ebb4e5f2421fb38b8daded54e03207124778a4c5f1278047161debd4f254f8765a9f6a7d8b697b81039d48e1e4d8a0681b01b7dc2c30e240979396985204892db0c147de55c74b057409a39b13fbf80ae91ebc7b78b84bc8815104b0b40c4dfc2701ac7193028062e595368e8047a046d4480c7bb49f420b5c8268b6fab82e1099e2e4ce89005993ae2897dc050f5f7a8555108907c47073b2b0164c62cf6ae494d7081c9a2eea793011798d3d9555730a0011b243d61770282a9a665c018b5769215760a0b8f7c6ba3ed06449347179d4463773e4aeca4f922ba0159e669b4a701bafd911c9422754ba073237f5f41d8e513da072472ae75d042024fc7c246f7900e74023ba0bb0f06f208c41bcfa14ea0429bcf51ff722b6b10914219694a0ac963d077f0f8094959a0acf66f3ca0d99107b20d86185ac078939b90ec90d3ea6c3cbc5871af8674a43a04c4295dc0d00ef860750c435e8cbf4cbf33697b4e1d437de9b0140546ef719c63a08111bd3a81c992fe163bbddd429a0b2f8825177326974c6d45f5999931ce03dfc5431e7c28c18dffa4d4910764cba4cb1a3102499b44346ee81c0a4df13130118a62cb8cc2f923ce92c8df4386944af31f4019b570a041202a9c8fd37c691aa07b7cc0b4254e30a0ccfb304c068478008cc94bfa2c8e14419b281c69f15928c5895218805a0cb489e186165fcc25c8f9eea65b48debbfe3c1cddc6a61aba97c4380ae7a340a808b90d49f15351ad225b20d4fb4c94d5535520289cd440ca4157c1e34fc11c9fe4698b98a093bf4bc930ed9d68de84d4f0895f732dfd7b1e854908924f52d01992d93fc72d27152889f488940c992815bfcd7d4bd3605678a587c606459ced13ee3827c2c9175a4f21800efac1e286c10dd30d5600d579cc07407acbe3f31ca8c788347836a56704d40a5426cd06f0d5b13f5cdca4348431f593ff68861bdba6135dc1b42b5025a03331490ef243a2328184c68b099d9b45a6663292cd7a097f99e915591a4d254a9305bf7c12710166b4812e46dfea000160ac4c2ce8b42df5679f6a89002dcc17898a89e12cd14b284484b7ce625ba3a6600a898589c81b0a7cef4533d226790182b228833f9bac410be0390e0f5bf4a5c113af301cf15b9380fcb827639bd863726ed7ed65f2cd83b1ae3e0d03148884e72d17a7e77931dec6c18c7041aec42a8aef0aba30c951a30215e899eabad1275ad69134185180530654fc9ad54c8faaffe310d5161c0708a1d122a46de68ec83e447da0fe121688e7bf807a87c7428a96900663bed02c3533d6dc0416c6e835af1ce9902b2745304bc3952060c9fed831c13a8d53e662b14bcb826aa4b1b33d0f64511bf8c212829032414b491c06cea7c3dcfd1405fa125e40eb6f386b8569362d513287408d46910b02346999258ec52c8086550d2119f422057fb468702a491983526971f28f003500dfb9037ac05143ba0576db7031f9a45ad5d696342371cdd28205d4b4805c73e2132ce153c54483507da59626b41a935f37b317836471c1c5551c03c39363c60a491e1a39a02e5bc0d0800b9174e3e0ced59b0b9628f31fe641845ad04d2cab6fa8c9f22f8bfa6b6811ded240452af11e10820d8c8316d768280e6d6dc7694c80c4987b344f167421018f8ba08c349c959dae523c330b14f4112c8f3418a5d6526438818ebb05a45ce6d80cd5ab481ca3e5270ec6771c18e392648033198f0e8db965b946ce7e99a2aefd313afb401bda50bdb74131997b7138f6a61c2267a7cc5bc8d6e278c211dbcf8821dc54a4943020f2605c7308289c249e6bd98a4b52820b4bc02aa4b6fa03f123ce883fa5a852d092a759c1473f663ed3280fb4683b9360e83b03668e10e7a022e248c79012795d82cf19d7d44903d31e649f50a7e679070e34e613c805b399a4915c9077a48e0357998c2df8906652b9cc40f7814581243569a6c219272342cba5b304523c916116f3c6c304fa57ed427ca22186d35b3c80473141dcfd92dea38142fb142e6e01c8cc8adbc302f38c83bf85c44dea3a2a5a1e090d042936c12a9b0d4223778aabd1ade6ad08b3e508c66f7d6f2e9fd38aae3089b2d735af4c65ccdd24b734e5c43353880a28618efeca38778b9369627d0ddd8e1e5dad452308c40c4c5eb108e80b866051b2d845f139ea9f0b128a80d45cc0202d45dda3282aba8516e063c5a9bb0589471c80bc1c408b2d8a6a24417fdf4c792545546057bc080c181db34d1b31948ab08952c1692e2ab37f81e104673af5e6b4b40b5d1ce0c97cbe7e5dadfad1688289a51a1c0c489023f0bc08e25c5d93e31e55a754799447d02d8b19ce41effc890565872869590bcc0775f251933491875ea53d37bb62653dada603ae6832e93cf61763b57e82ca080f06a4ea913d1a2d0e27c3d086a0e880c18c3b3ed984c2bb24596dc03d7d2398ddc1947bac8f754432651c940204a3bd8014e16c57990038bfe65034cb272b1aa7250d2b4e3b8452b1f8965a4d384526469c9c063f698eeec48369acc8580230f25a1416888d342752cfd4c7d8a356091b9abc5e4753b56d418c0dcf1a4a9911b088e1309d421bb06263818b6b510ca795193b2375855a2d31bd55b27e22a05bd03d494d550b29091eb355d80163747117cd9d2e129a946886209fb0669d854eb513b3549000ff8b43d9262265918a448fe9d8c52d016953a16d5ade434169c5e7c83ba61eaeabf80578883aaa6937d443639a028cbc548768e952c5502954e1607e8bf3798e01c3acd5aad5fdef566a74c24c7135987d98d6aab52afa1dad2ea5d5d52578c5e44da2d5f90d1d48933bb244ddcc8aa796500ed70ff10eda1ff4e1256bcbf9ab69391ffdcac934780634d9b7cae93478804cf94926fa1bcdcf3a58a7ef95e4b16e775550f5d5ff4a454a8e9529e0513c77853cc772d8d8e7a7cf41d1ba0106f69f099da34e67e98beebfc6e70b154e54e1beb9f89f94b25c41af4c73fc4631462b6de19c4e6bb2e1ac579524e0e92539b07108565393620afa6417a172944331c1f8b217d3a6b25a59f6d64ced5b1413c51bf8b1b4c0db92fc7c1f7401ce9b974fa5327b4a4ad39e6e1d355528a680442f410d4fb09b8d4a0af2f050f212f00d50cb4de624135d5674fdd2def2c6207d197c95a7cf8c9bf40b491414113a58808e42bca12b20d8f1f1edf9e10a9fcd0133f13b6fb458e049f73c1951a72c24c1902e6030da1e461620e530afbe31022b001c77451d7019cb7130fca4c5683ccf818e118400510879dbc6e1221a917b29221b03bef8cabd37c9fa62e6190f0fb13b458025ae983c9c992fb2093db921a055251a06b35f4cf7031a240a34677ddf6bb7fa68b1a8b389a9a76d666f1be0ebb23346f9cac45e9b442ba3fb1e1abe899b8a3e158cbd4d3aff16ff9076de23a0cc4ba0da3ae8f606dad1aaf5f66daffd168d4115844dafc9d85581b4c5b506744fd0354845b58b9202647dbbd8fe587b8089a5bf0674cfda6cb9aa005457ed18c646b0c64fecd77334a5cd7a8a95f98d6990189aeaf8c73393486e41cace5d1c28d0669dbb4b0cd78fcfc94d08c9a24d46eae46171d83dfb689cbd4c3b6ad061ab3fb0629695bb05534dad61baad0d841b5bc7756b6b48ce394d5ce3b4139b6a700dd12dae21d4e426766ec7a4072cdf37e9829c4751368a6dd27fde414ef58c0160d764fde7b2fe4947edd631ba3990479db2e167073b1ea1a61b04409da0c2a6b905625c0924ce4dfd84e75dc6bd8e1b59b9e0a926568c4235b0c4a97955f8dc84a569b5c79e34acedb3f762073e6abc279df94ed121a17d881e02dab18fbc12d8b14f7cf9d020b67d6a19f19f74df93834be7cd47c5f780b171ddc96d4e79c5292e961a66a71de5f0412d46f6dfecd08466defc31f1927adf3a3c3f3f110b6fcb99543525f6df31b058eded5c9e96eb002b45ade52a83488ab0c1a415e1856b5a3c9205210971428bd869875c0affdd3d6d5be5f2769e6d7a863fe46b74844d9892c38fb82329dfa17ee7a473dc62975571076243767350a2b60f66ab5f63264c66c1c67509f9b17835a52db67047f36234591d0d71f1da36517dd228751a8ec51a3567896a6e65f113dc7f109b54b247455b543ee21926bbb40c566e242b76b10846683567b46c9927a3b1a3180d670d83e5da086d1c6c1db74ad6bb68b19b8a59344146b751ceda1127cd308fd3b6ca9651f2782b9ddfc8faaaab8f3be70d10dac791304e5d226f92f2e967ae314aceda285b56c978442c2d1ca3212a60afac9193d0656c21704b36c8d0e01336ec45bb44744da0e7239fcf4b80580100613a05d7259b6f65de0acf195f6d23c6af44bbb88582b77bd04cdb5034ed61106214e2be5406bd417ccd17cb80aa9404d78fbcbda022b77432b08a697375b4cfd5675fb8592bdaf01aad5ded297e063fb489433b37dcea0df8a81e7d158b329c83e9079ea23d5396767c2af59c8048b08b584e1b1f860fe9288846b8fe1bfb3729cddcf3665cde7018f977e9300abd3159da5e7bd360f2484beff433f56232f5fc84bb18a0f7535cb616a923541a59bc51f30953a0b600a01cbd0d0faa224c055cbe0723e508da7172681c4c630932ed731817f24c76b428668ae73893bc18b2233921f409bb5232f2c23806b481a94fb64dea1a2634141d8511262a7b510e91c528507ce442d10f3af4c8212e8a824409788f0047a33a3f6332b2e4e0c3830ac8ebf1e3e3570c5895ad6ac18a9546ca8cb67adcd81753488bdbcbee8700c446381b8dd9e05706be371e471900ed581380f7f9ad1c02a01cc03aa6d03ffe74aebe02902076c3e416ed66b2f039d316ad72a395288b22b52c7bebc51a75b3d949607d305616ac8c0a7260fe600ec8eb6625305e0635098027a645e184c2cc9879f73176715366c8091aa72c581fc49807d342450eca48e5608ff30c88e7f1bc7209c937bcef05b48fe7ce8ffd6b0504a61ca9301946586978a58415458af170519627ef0a2c47c85a19519a0f1f71bb9ee3b8ec28c956dba94e43493771ed53b3c3e11f99787c9b8358540bec2221bb05ae20ccc3a9f9e97a131737bc911d004456fd310b454364bbb8fccc861637425af8c662cef1706e476923c17da0bb08e003f2798cbbfa168a7c82dabdb6d21fe493b4342eb654053853101ef528fb133786c415401d7ea701f8440698e059e09996563912a8f4a4f8e224e68d911bde9bb11a24d1116f0c8415d282fde85301e0f2d23f7d03b744f2990b40eb050dc76b0e726533e8e9ccb824fe8c29b15ed5e0c50ab318439b9a264a9b32e345c49d64c379dfff135e6762816768778c57c018903ccc46ad9526473d9727ca23c6c3eedd6b8fce972f79f7a97474b8f8d32744516529160c9aa46c823e95c83b0155d94023d1af2c320c0da5c4934d1c77c3d13c52b3b3215f5ca3dfb4f416b31351966a36a2d48cc0dafd677e9a5591709f265b7be68758ff5cab40b722f4613a118f0d088572b90dcd0c1e27be761e945bbae4c60a1d7059ef0978f58df53d97fc5861d4dc0474554a56099e8c5c50d4623654431b42907ef871082b7756d988370d02c5aa2d4ce162da782318461e6ef361c7e026e6f5e2cf3f1f5566d9e7a71d7cb5b3c96fb07007f10bcd10a3e99b8b56fea209e10489ed8140838e6fd970c918e2e00651188c63b9d745b42865b7c4ba3cb4817707c488cb87c10cc47640d7186267a12308b35a1042f822bf1fd39edd6d14ce9053811881c2a1458918302761e5b24f0bda91d2fd5da440f8e4f6429a43de44205e80e4a46d735c02050d639c49264f32b65273d5dd438f19281b7edb1028909a0cdf1f86b33f407767ae9c8ce62e5a6f7893e00eadc6c793224ca9f63938eb7c68a787266e42dcda82359ee03fd460e6df8409939adaf504386f98c5da97cc3507c9a69fa2a1d2ac3ef98fc4ae0914dd11ca1846630c9044249661840ed9ca40df2741c214979d5d757c9f4b4a07d30fda6cb86a8b951261de1bb359a98bb9226e68f1d4909ccac412553764b4b7c2828044ed284e9d7cb49f83599144e8da9a7b0f1502345cfdd38f70aa86974b8ed9e4be465ee09ed59b3c605854dd0ed96f826d0939a82c1fdd79c0d28d1cdabcb19ede611f902508b92090338461506cd18cda07e819eab2295a7777c54d864d502d84d4a636f5004648dba02ddc9b1c80cd72c21b5779a9bac4f4e4fa4c684d2acb1bb1eb9fc4797e1de31712365116163425b31dc57a206701c09633402d435c1678d49918ae19ad862ba9984b22e62fd34a8a5b438edb222e80947cc58836d722f509a607ae5cb428ea146fcbf38bd92f931c62af098a0a97466369b3312ea70eb86ac38af830db319211145fd2865d6e8e1c8e6ed8da868d50f1ec78db7c87089a0dd060824cb288ad1478e869de2f713539c94691fd136d5ba8de93466d4a44bf55badc13972fa6de1c79642a10f473f26e6eec285de52471c2d1ce4fc679760edc1e46a71015171eaca338f6249c00fbc724c8c206642332daa7e52d0b309a2fdc6481f6843aca4d9503eaf90d41fceb6b9fade42c6b8a1bff3f21fd588a12452137224661e35e455199cd1291112056778a41f379461d317b60ae5c20682643300542671132075c44d00682fb752497fa91873651cf3c56962f64429685a111045bc0b0194bcc3a938a642cca2cfe12a7a861a2d54c8a97ec82c84331ea5ac007361fb1acc6d87a704ec65074d185b2bd29a80069510db421d491b7415204a2042c42c9f5292d6a8fc31bb2da8ae4133a3a8916a89bb2d17e164a1e83c0b6228b1a82d036a6a1ab93b1e264511924589d0ce0518c8894318c329053d9f4ceaf787fabd672f94a61b663a34ed2bc1bbe798d5a8a5655c245ac9cdf68a8a2d59198bee161dcdc2c54af9887b6743786336d227e809948ccd7c98a324dfc5431830c4c09290b649b600b459b44a5a8891531cb081519c93dc42aae6c78e486a7c0be7f872e5f17fb9327cc5180d0f6d62e2f0ad702955f7874b1f7cf1fae7419fc30663667bdd6db93d6578c6cf2effe5710fc8ab18cf5b1925b8a30a9eca222750a73165ddbc880a1646050720f11b6fec573d9972bb896e51a8b188ab2e9cb1d686b1970c92d3b56f6cc1d3a163c734f8d0dcf5e1c647fd8ba9643a5e02a139b46905904e7067d1147681e8e23b50c0e922f03be2a3456c186c36aaf395efdedc9cbdc760c72cb8bca1d9c9d2b4dece032c5959c729da3d38a85c413875c63975be75c9b5d7b75c0dc6080e7a8d18eba3e309540659badd96dd1ec2668e6e452d9d43cec9ebe39e6c3b5d4c6251f032a1b94b201691b49c86664d5da7dee0dcee9a0427538f053a72dda4731f38956cf9efb9cbee8fce72772969eff5c9e579dbfcdc61f62ad8127fdbda193fe8e8ff5297fe783ae3e5c511ff4679ff14747fae943fc8c51831cd1f7e2930bcde6bb3e86ef4dbbd7e3dea5a03e924f1dc2c7c7edd15e361e66868fe3f33e9e0ef5a6d5395667ea654fd3cb9ea4d779a34fc53b39691f75104f3e59f9089e1d3c39edf8a33e24af3fc003dde89cc43e920a6d6177fa72c46dfba37d0c9e39858e767be19f0e9f9313e8ec43e8d42173f00b848867caa180d047cbd1999729b46afff9a3e3d4917174561c1e4b686fbd0f52ddff78ec9a1c482a27acd967a9d18969b430f109d44f3c118c3735e5c24bb913561d4915c3b49642723749ca9756a57468d2fd2d6e83e18f3fc11d173eb886e727b8130ce21966955042666f5a1f7f85df9603ae7027d476928bc27b749b930d5bc49414423aec20e6e9176e97c90eb91c18259bd6f4a0a3ce64ff5a1d10c59c4c4f6a643f16e650e1b5ec2357cda940fa78b63f169300d78270bb2aba4690ecb569570abd8b462bd3cf1f0a214cd42ce5ca22666a4d21c8ed24c68a923a49d5e73361f856763321b05e62f76576f271f1b6545a163357785b8e8a31eb7cb234cf9e2d08619551bb997913851bae1dd12114a880a9082dd4cbc21d7bd2d3c2bf18868b6f26bf625c7768fae06927765a35a5e383a018bc75549c4bc851992473ac0efe826c747f38ba37287747721575f922ef944ed9c956cad27e791683c6f7be15cc2cbf28ff405cb1d3c71071ccf6f26440e4fb18907af06411cd35254899ac8aca5e1766900d3a4586da165d7c5968d24fde91a409036d073821a0f01ccf51a2651ddc151d0f7d3b38e14b7eb2fa6f96f08c09faea12599e6bf56f1a2bc3f36754d0328d935e74b5725aaeebea4cac595e5df19d9a57190d9351d0aaca341ecf56f970b0f03aa18b3e640d9994c6552f9ee3cd1dd3d8d97576d6d739b8b3bbb5b921d0dd8d9dba041b5bf56d096eef6e6fe9bc3bbb12dcdcd8dde160637d6343073715747767777d5305377676f4277655b9bb8d7a436568d4eb3ac3b6047776b6d715664e7dc73119b6742d747067635b61b6bdbeabcaddddd954d0adf58d2d83c38efa44634332ec6e6e341c55cdedfaaeaa50bd61beb66e2abf8db5180eb737a0d8baaeb1d360e8cece067d8d32d42d747675de9d4dab1d54ebac3bdb2a6f63d7c25723d9d015daad6fe9a6aeefac6febca6fa88eddd9aaeb365bdfb20a533838baa911baad715015c26edb5041e802dd2d1bd8b1a3517d777d87da8182bae7b1f936f587374cdd767775776b8adad9569f800c0ddd7cf5c6baa23ea887aea6a3fb6d5bb524f4856e2868545dcdf5ba6975d58550a10d53eeb642721d9a5d323476b718872d677dbbbea5a1e66b0dddeadb8d0ddd599bba7d771a8d0d453b5b7a906d02967a88341a7ae0d8646f087c57b7ce9646b2b1a932401f6f9aa1a747ecb6e9c29dc68ec1b7b1abbb65c3509f2270e856850ee4d57d518716364c41539f467d777773dde0b0a5f34277aa12361d33f4542d808ceaa68f35df81ba293adb6aa80f43e577d6750fd54ddd36eb86c037f4f0df34486e1bd47570db50148c4d332e360dd1ea72b74cf3415bebeedeb54661c30cbd4d5598b3a9180872cf4dd3f3eb54e3c6c6a6a32b048c4777cb96ee0b78adae5a071892ee6eea791e64c453a5f9143d40fb6b1eb56570d8dcdad079350b824f9876a0e124e56ee9716158c5ceaeeea19d2dc7307e8b896d1a6e5f376368d3f0f56d43f65a8aacd7b91680cd86250334fd6eef6cea71b16e8f80bac697ba5b58902587cc6bbab3808f6aaeb1b5b96968bd617ab3a12955753710d4b626aec6d6b6eec24dc369d71b9a3436cd271c2bb8698634937d637b530f3df8ecba691dcde5a0dfd6b514519f00f2743674e5771a5ab658434fe10044a0642cf48fb369f2ee98c1bb61a49e2957752c4a3dc5b9b61d47b7e4ba92013020b53cde36bc04aadcd06c65d3b095ed86510f8c74da902601ed61c7e4dd35e37853b7ef4ec37c6d4b0f865dea370a6a4d01199e66f10da57640c71a29b2ad871ee4ddd69241d77863538d6e683e3dfc1b9b8aa230435da1bebb6d326816b4db583762c671cc7833c12dabf266f89b0c8dfa865125746fd6b74d8d37b582b1a147f7368f00865a0a51c348ff2d5dc2aee9c2c6b6a59f69747675c782a8db319c56b38a0d4b0668ea03066e299146d46d6fa831b4ee98a0d6141a46ce43eb68b563b3aec9736b5b078df4878ed79261c7a69d754dca5a87015e6e5edbd6ddbdbbb9adb99116c20dab5b768daebc5d37d5dc3463d3aafc8e21f04dc39577b5c4d9d95ad7adb3ce4c0c0add68684d572b86809962a4a82669c6b4b36bb15783a41ea63b1bba51d71dcd4801baa1fbad6ef8faae21dafabae94dd36feb461c6c18ad62c730d2ed5d536e43b5647dd388ba5d8b34b44477ea9ae16d6d683ed9701a061d47cbe386a1339159d0669beba6c65a07df35826a7b7d6bdd88f18619850da347190e5e3724b76b663e8e2524748d37b424dbdcacaf9baf694dacbe63a87a6bc3a8a1dba6e78ddab1aef5875d691d98e0e87241cddf324de29849dbb6a192bae921fdb5ed86a6b3ddf56d23bb5510b5360b07d3f35b96d6a63fbc61692b9a55acaf6f3886261d23fdb56eb4ae452834891e0c1b5a89044e6c9acf10a2f5e1cd753d27dbda303260d7b0363d2185b960dd68c5baf2ac860adfd9d44dad757ba0df75c3fb368cae6ce6bc9b9b664aa087de8e63f187ba11b76662b36e4a6898466d584ae49699eb6d9ae9ce8651d21b06872dd3928e190186d61dc33d3537dadca85baf194eb06be91a329c36b7743b20ea864a2c0eae07ce9623631364c1a6632aaff924cc73778c4ea049a3e108a78511e418cdd1d1b30e3d194416641a4aab33f061333bd836ccbc61e8d7c8ac0daac570b851dfded21adeb663f8d98616f940b45a8fdaac5bcc460fe9869011a9acd67cc8289ceb5a8ad437ac81b3654a300ccfb4595dcfb38008109df178b75edfa17225e8184dccb0153d5901e2329315c7686deba6bbb70d0edb46166e1bdeb76de6d25ae35f5fdfb454b5ba5190f590ded144eb6ceaf587dd6d339cf42c0979c9ae69d42dc3484d6fee9abc9a23c2a4cda8ac66ded2708c665e378377c7a8289684dc322c73cb6a9d5d33773204beb16ed47133fbda35025b533528cb66986a4a055236fccc48de866a285c486818d1b163a6729b6635c9d2fb36d5d8e4f50751f676f47032f89a15a2eddd5dc314b68d84dc36256c980515add639db86aa8d8a02dcb3a1e961cb88503d1b5f370b4b400f7a4dc19a821ba68b62dab057c7cc848d56bc61311b2d8437a0bbaf326bb3bcee29bba54747bca777d83dc73d28beb6132fa41be0cd437275598bae456d9de2cd617c59a60ee0abedde00af01e29bd834585fce8737915870bc91a973d82ec981fb9dea699c69d595a7b8add7b3928f3aade3eedb0ca0cfd716b68ff886417bbf15c3352bf393c9ca791232dc79516d9f2da0f9f603ccd06bb77013f6e0fcf817da74c50d6073cdda215e3165bd8d5e7308d61edf18419f6ff52c3683024311fd8f27276ddc83e3c4946f00cc41e9aa56b9fa8c42b85fac034f5715d2cfcee515be138d4d447d79c8c6930ad6adb03ecad6784b936d28df3f24c6da944c1ed42684bd4a57ac1108b7e129408405dd275edd66d719dd53e95ade620a9124fce60885bc5569e756efa912483926b70fb9773210f224d77eae1020c765b469a27b97f088200412dab8ebcb07e1df44defcf6d1bacc08826fd5e10a36e5d2f6302676e987fc70c9299a9e5d1a1507d804bc838ca731077e8476468f74be6d075a68d0197ca48b1ce9563dfa11ca83ca0c831bbe488a6e67aaed0774fa256e25d3dd85ea4ee2018d6eb9c310af4f9587750b223962e35066ccfbe70778abec99b4ac64c6abbdf08ac27f750fc4cb182f48c22b93181d42a5b68f06fcd826e8e15deca5193994cee4c229beb910c1ece4883f015a2fd375cc3420e556cfdc6811686e4cc825cef421ea35da1157cddc3d1f00e563e03dd1d2598f07a65cc76a42c5cf998427d9185fb04681f7dc43ecc08e01eb200e3322b3091fbabd5ff8f07f73146c9faf1acdbec3b62514a0b1c01765f6df9d0f8eba1f300375833592d96f9bc69ad895051e118aa40fba67741fe847eb5650cb5a8436f8e1c947ae1a735f4c52d77072404884ae37ec6b28de3988111ad1ef5bd8f01f5a9d018f2a6523a02e2cc5fbd5cced98bf9d1cd3f5a07836015d9a8917af4979bf4183b874d99cedb7af4f69c800cff8fe50a66d3c312193daefb74f0e8e3f666105bad269073dbc869caf92a5db07edc4ac4cb48fe318e0a5721958af4de39b6ec9b4a01fcf065de01267efe8e367bdee7be0033d3b8f326f2983d1d92d47c4ffd5357dadccadf4d9bced53fa20b74caea2623c638380e2b434d330bc6b38c742cad2d5ddde5692ba92924ed31888582f4bcdda3865d3f0c65cb96ead7090c94bada6f81ee54e06b9bc78d670a8075f278be762d829f6cd6c050c72e9743e47f66d75efa30d0474cf33805efba43bc8f2a103a80b8b0f2b57bf7bdea3d4b36e37436079f2ef75cfb3b48aa788d87175d973357745b9a2b4a7539ea341413f03b27987813e3d12fb1f4fbba71f4f6c50d6c4adc492ada4dbe49ac0cc7930761c39b35c1dae24ba4e030ea59b48aed46eab7ecf1f1c6381ca18924a33ec48430a4d202965ac489d48936144e6981ac58614c466421af6240bca1d6e53843cd3f5c59c25cc4765d2ac47dd5b6f188f7d937d91ede4520dd3d127ef94b09c629a620fc5148bdde40ef33190dcdb8ab54834c7581434cf5604fe04532949d52c45a5590c45408a9da803839e63263a4f9e9558270fd9b1739bd28489640e23b2e27906520a7f9a860cf350003573b540363751b0a70692e124b625b015d55cc43a12c9c484835896c22656c23d24e539dea10f512be3143ad1b00a032a545127d947ba59f03226a24f6ccb70110db59986013ec935f287bd95809ee9f392ac258c43e5b2188506157881395dae84199424aaf15c9264b183fc997516285f80e2082a9e63091a9ce7092ae109a65096acb9824eb4d8828229bea0cfc97b8e31984c9a33bcc519d569b7579e2a7cc33e842f133dcf50976616e660be1cb7284f7886740cbfc8419e6efaa7c791620db953002d88b003155506f2122d61082ae9698e2066cdad833ee43eecd23166c01aba87bfb827dda3b6151db49918cfce5c9c3b61b07fd8e9d093694eb806d0c1190c6faa1ad4162ae9768e4cc44e1eb4e8c5c1292e06b5ded3e25be7b4d5fbe8d20257fffce45b5e0a23970899fd1eb6e93a6e0cf9517216a14b63f22851fe145eb52d0fad8f4b8156d0050d8a56ab5ac7ed3eab8cb4ea05ed62210930f7b87dfa96e68f1891dab33f4136235ec1ecf2ecf488d7c14eb99d33d94e07ad0e5dd5ac825ab984388c7eb773faa6cb5155e52e67e7f0f9a97ee205e8a43602d772dfb64f5d98d11fd17a92725ec0fbdaa1e7a45df21e0dc54bad79398d26c0e724e1843bbab8a871d8396b1d73510a6ed52c0f625505f99f6a3e6c98d691bcde3eeabc79234169530c228fa1201579205f3b50cd7e747078c8eb7f58e7838f425536e8901b4dc773c910458f9192172525fffe1950f6d9bb9ee8a56dd0ba69d1004415340b34f82fb4d8f846dc1e6815b1809c0649e13a9e4bce7cabddeb4157e01ddc3a229c5bc74fcf4f0e78fd92a2360f66481f178d58f80a409636487a61efd03a2552c29bce719b9b5b42d4811496c6c730f116938da3f9748b2a1066478fbbbcecd9ed9db406a63a6fa05565054605d5b050525144a95d98a408d7b552deb6072e7eb93f8019d5896bad74b932ca2413a59c7448821baa8714007764691362b21e05a1f3c1a18a604d9913a920b7cbbb56df3d3a681d1eb6e918478c025e277df7e0a36a29bc73fde0e38008e95d578d4f0a490e5aa4756574ea38fa39e948bf4d6c86581cb259abfe04cbc7a1eac7b4800b64246403e1eec1bf8049a1a6cba5f5dd7eef3dca522b93d4b8d39716c1c009d0150ec55ffc47f7ed39e18f410eb4754dd1df881e7482246942f0ebacf3b363b3c6e3ee07fade31883ee461272d24c013922ef0eb6207be8721d7fd2087a2d262f029b19653e1f9a7ed0f84013cf9705254271932e0a540ac022d7b73c55d9813921b152fee328c5e90b0d443622c44b340ab0a59000d205c51c671c66a8b00687d5cc2501f5e6bc508886a5a5eee40d300af358c4f83948e078cb2af18e79997dc9e7ab4ea7a06024c641e121d533692d919caea3369e2b3f303d02edf01c9b2b2a3caf97084db38bcc70211e14b10f9f5bcabd974af75d4695199e4f2856c85c2b46c2c0c1186dd910cb35e1b44f67b5e0647cfc6cedb73591427a74609a9c900ad7213fb2337315acc3ee792bb1f0cbf83882d017b4232d23dd47fd9aeea1f42f3bad6d60757dcea3bd1e39524946826c340a5c168c14770333b786cc58fd35f686782e3877ced396b457d449e7a83569bf1f9ebb1fb1e149316206f17fe2b0986feafe7dcfab429e2cac0eb0f8edaefd5f38c0284c6e09c44286eab4003102b621da78f884a335050b50245fa56425fa57ce80c0edfb1cf1f463fd2a0474d211bb372e4d439c824ccd1bc35689fa8f664656f80333fd4f03eb4b17bfb04fa6d7046f5c1d07b19ae836ee18ba211bba7c0d68f814c70a4e00486eb4921a90c862dccce4f3b87accd5a3b0b67849520679acb6e2de8266cecf77e145c3f62e7fa63ddbd59a0a101beda1e7ed54186f6013f1fdbc0a44adceb9268358cbcd124e7e53fdbafac052f716242afa5355c8b1e5eacaf34ae962e57f729f0637ab9ca901aa4fa174b2b57fb12dfbfb81e5fedaf05b60793e0a05d98f0f649745b9404f261e203f8c76b074e63637ddb5d77d6f870955567bdbe367436ebebebface0875624cec3aebeb1be86f5d806e9642b74aa1dba5d09d52e86e29b4510675d68b50a885530aad9742374aa19ba5d0ad52e8762974a714ba5b0a6d9441cbebe694d6cd29ad9b5352b78dd2d6d9286d9dcdd2bc9b4fe5dd28856e9642b74aa1dba5d09d52e86e29b451062d6bc9add2ba6d95d66dabb46e5ba575db2aaddb5669ddb64aebb6555ab7add2ba6d3d5137a7b46e6554b25dda0edba5edb05dda0edba5edb05dda0edba5edb05dda0edba5edb05dda0edba5edb05dda0edb4fb483535a37a7b46e4e69dd9c92baed94b6ef4e69fbee94b6ef4e69fbee9696bb5b5aee6e69b9bb4f95bb550add2e85ee9442774ba18d326859bfed96f6db6e69bfed96f6db6e69bfed96f6db6e69bf01b4b46e4e69dd9cd2bad54beb562fad5bbdb46ef5d2bad54beb562fad5bbdb46ef5d2bad54bead628a5b346299d354ae9ac514a678d523a6b94d259a394ce1aa574d628a5b346299d354ae9ac514a678d523a6b94d259a394ce1aa574d628a5b346299d354ae9ac514a678d523a033d6afd0970bd1c5caefa3da1fb3da1fc3da1fde94ed5878c192c2cd04611b459046d1541db4550c917778ba04601a4a9c702394550117ba788bd53c4de2962ef14b1778ad83b45ec9d22f6f522f6f522f6f522f6f522f6f522f6f522f6f522f6f522f6f522f675c2fe1f815347136fe789b45d679b9c884cda46b18a1bc52a6e14abb851ace246b18a1bc52a6e14abb851ace246b18a1bc50eda2c62bf59c47eb388fd6611fbcd22f69b45ec378bd86f16b1df2c62bf59c47eab88fd5611d5ad22aa5b4554b78aa86e1551dd2aa2ba554475ab88ea7611d5ed62436f17b1df2e62bf5dc47ebb88fd7611fbed22f6db45ecb78bd8ef14b1df2962bf53c47ea788fd4e11fb9d22f63b45ec778ad8ef14b1df2962bf5bc47eb788fd6e11fbdd22f6bb45ec778bd8ef16b1df2d62bf5bc47eb7887da3887da3887da3887da3887da3887da3887da3887da3887da3887da3803d08db22c82982ea45d04611b459046d1541db45d04e11b45b0415b12f4a5fa7287d9da2f4758ad2d7294a5fa7287d9da2f4758ad2d7294a5fa7287d9da2f4758ad2d7294a5fa7287d9da2f4758ad2d7294a5fa7287d9da2f475ea45ec8b82d5290a56a728589da260758a82d5290a56a728459da214758a52d4294a51a728459da214758a52d4294a51a728459da214758a52d4294a51a728459da21475b68ad81705ab5314ac4e51b03a45c1ea1405abc382f51f311e1f7d5d67cff2a7531bcfa592a7a3955a6c84a27c768af2d929ca67a7289f9da27c768af2d929ca67a7289f9da27c768af2d929ca67a7289f9da27c768af2d929ca67a7289f9da27c768af2d929ca67a7289f9da27c768a92d7294a5ea728799da2e4758a92d7294a5ea728539da24c758a32d529ca54a728539da24c758a32d5290a50a72840eb45015a2f4acb7a515ad68bd2b25e9496f5a2b4ac17a565bd282deb4569592f4acb7a515ad68bd2b25e9496f5a2b4ac17a565bd282deb4569592f4acb7a515ad68bd2b25e9496f5a2b4ac17a565bd282deb4569592f4acb7a515ad68bd2b22ed232eb512bfb70d90388d5a5becf9abd764edaa73963d4a34eff97bc41e00b4c49299e330ffd57eb7d2b635d0a4f34aff83779c8e6ec114b52d942b5e4aa541b743e108b2763757af80b1b093d676a0ab0379dac01a8b1143dec662c690b96a2da5baedf7e7bd23ecd1a83f215b71950dee09777ba9f33e6d477e13e6be1996bef270c3ef90c6a36b9ec1e764abc5cb4030dfb5bcb3dd0196f5eed18c66495f72a63d38daca359f7585af8a51e63d091bf64922cf2b480bdf621d040d647cc22daa7bdafcafcad6cbad540215ce394d539a073a6336e5965c4fc5cb2a6e6c2edbe1998a667cb5f4b11741e84f6d0dda30c5e67f9362ff5e732d46ffb6a896b69c1b5aee8ab5532009e75d4d263c2c00a88bec88dca1e177fc5b90ae325adf584cf95f10deff49f1c34ca4d490f08cbbb8987c34bdc9484e6558245f11a64e85d830cb5bfd4f9c7a6730109952bef204de3da3fa88cc29f4ed4f49dbba1da8268dad66e438ab29ff61532a46a3c817284fa8427500991e6ee21ff0b9e3736e1bdcc1b274b72cfb9e8c871fe58a363b27a7a738cf69e8cbc453d3658e1a71cf9b53f3e5adf5be9ca2ffeb4ab98fcd939437ada3e2fef1f2e2edfaa792d4f6f395d408ec4efef6ba0b43d47b28ee2ca97db36a7f286744bd928d497dd85b3e496227471f0e836988cd9348a2e8f8e934805e919d0cdc689a71e753ea21c8fc9503778d191193397af8ae6f333bc191e6730f2a27130f3f0662e8ad115e3786d383e6ebd2809e930768ae157f19621bc0f8641129947e1d01b06aa1081f2a914eac0770ad25563149acec3986178631807eed8380c6f2396871babc0270a7034bea5c762c6b9e582601d964b82478b299ef0cd15b22e83b7a2f665d4a33b3c356368ddc5c5d7884b40e1cbc78d73678cfd59ecbb9137fb449179724b4f987ce37341c5f2c1ec17c3d1d5241c629c0ed09f71c1fe0365e1dbb74de8ce9b2c30f9daf7123ce29cda5a45b855554c670d22aa283d0d14af7ac7275efe94fc89a763c86df2140c17732e9b82787ab80972c22d6004faf43d04e51a750ae121fd165132002fa8f4f1a87486108dd2bde989dc1a36a4e30926de0dfd120e74e8ff98eeafa6a0427ce27b637e7036ba0900037493dd6c7637a11bed46dec4eec2494845e3dd00f89c731978213b3ca7de27e82bea9aa9f780bf3ede768f011a3fd3704cbf38f25cb9ee008fc0f0f8633326ff997fefca090d78d7b7e03e9bc474253bdedf0bc432c14bd772606a4e1b20a31241a66931a6f08730de652650baa1808ee4e0bbfff8ee030a4c93701cab3b1b15e4716a43eee4173903f427ddba0641bc8e131f787d370c07a164890674f5198d310b8297e2214490a4275d83c5749989bb43bceddce62ff3081a5ddd486822740b571632f6132fa02b342d6096cf5809f271bc3d73960079988804ef8270818549158928911b46fe9cdb18883c0981dc557026612218f8d589745b86ab085ca278db2b1ba90a80af97e078e4e2312c741bbab92a5d6e40a8a774b93addab8eb7a4d3bde80f8f357a13af521bfb5c8a2e1fafb3e02349cc9822169d8472768bc4662acae3209271108f480cd8e346eeacb5581fb7671cdccce821bf482b729d061d5b420dc71790817009a778b1b6301786e2f1fd101a6ac07536fd539c8d4f992d4ae43e9b88d7d8de7b8fae37032eafa1096572056d1b34f70220903c145b74bed8d7e0fb38329fc1dbe77540648a75273dc654bfc62446e3c7585d1b89c42ee349a0786e8ec4c6c34514dc1053c0a8f07977918c0472b320068141bc92444780a97a373726a2cb10498657955a3dc93a00fcdeca49329480fd0ddd8ea0d0e523b4dc71b818122331203a5f8921423a1862b195844a7662c8e63610d75968e04343a88c3353cecc14a4c916d1025183d744ea5732b5b1a22cbe0092616c741dd8441043d1464fa273ba8b149f7fbafa842c6ee4c54c3428be508f6598e2af78adac3c7ce2234a24192dc3d231f8d81e1a987772f1258ebd5b77b8c05b78d9969d3b100223bc564482789b74c295a0e8148d72544454220883b6611250b8c612a6cb402418f093ee11e4601486924f5d74af6280ef84118528dd4b2241758171c9157a01ded2371e7ef58e3abe9a2e736f9c7ad5b28a1fc5abde3dfc4f3d60366415dfa2609ff21e1dac4d4843593bf2ef7c649ad15be8369faffd901bd97e5d8478d9496f019a659fae8301e0217254801e41236b601fb87b01461ffa155a2bb05e3f4752e45857eef98c01dcc32b77de230de45fc82d3beaaaf2c223df5293cabde44a59a53b6c604e307c4c417d4fc73e09d3fb5b9fb42675c9125df913e06530a813de71afe295e9b3315ea7447779a67c41130e85982f0b351df77f0179bfe693");}elseif($o==="jquery-min.js"){header("Content-Type: text/javascript; charset=utf-8");echo fun_adm_lzw_decompress("78daddfd6b771bc7b1360c7fdfbf829868d333421324653b4f32d0108f2cc9b1139f25c77640d86b4e0086c4890028522690dffed655d5ddd37300e5ec7d3f6bddeb7522620e3d7deeeaaaeaaaab4e9f768eaebebfcdd7ef8fde9df7ce9ff53e39da1df969601e7ebebc5d64f1b6582ee8f9d50d9ef596ebc9e9ac48f3c5263f7a7afa5f9df1ed22450a3f5649f0e02d93ab3cdd7a51b47dbfca97e3a3f932bb9de5c7c7075ef4f2fbd572bddd0caab751dccb96e9ed3c5f6c0709e5dc390bc2b2a0e0a118fb9d3249b09dae9777478bfceee8f57abd5cfb9eaeff3abfb92dd6f9e6283eba2b1619a5b92bb653ba335f7a417f9d6f6fd78b232a25d887fcd7f7a8d5f9b858e499d731d595ef07f2136ea7c546555bfe2e5e1fa5d170a432a7f22a8fd2de06dda5c674952e1769bc5513ba5cdd6ea66a4a1794617effed5815d1c35e5d45456fbb7cb35d178b89baa69b69bcf9f66ef1dd7ab9cad7dbf76a8644f3c893c1f2d422aa564237063db1e88d179479b1e5377bb58c4e7f1d5e6e2e6f3f7ffdf9e797f72fce46dd5dedfec9e944ad28d9c97c7372aa6ea2d3137f7899c527bf8f82d349a1d6ed852554e31f5754bf97f126f7837d1f25478bde6abddc2ed17bd1834c9d70aea80336dbf56dba5daec385dae4b39c2f3d4fcdf2c5643b0dcfd476f962bd8edf97c36d0bca7b693c9bf9e87b6acf24df56a68469faed6cd689e2c1d9453c40ca61dcc54f4ff21f85f26c145633c368bcd9c6e975254b0c69422d99e7eb49ce497b4e03fc40c5e5f4a1e6e6efbee5391ef1ec4890769bdfcbadb951c95ee5713a6dad7a0f6fb81cca99c6395eb525e3ec6c857daa5ebcf2ab133251a94d1e4b43e911a64140f9f27c6ce9df5ac6792f5ead66ef757dd6139ed01b64302ed69beda10cf21bff8cd2cce247939c9c539afca6a5bb9dd15269d48dbb3e863209cf6c5fd7ea995e4467c7c7c9453a18f2e0a6a351381c21fb4576b09576b076bbe6b8ca7c08276a43b428a4054c3f6ab3e26ea33bbed82b1aaefb2d9511f14ad3d74e79680ead13eaf74cd1f2a7556f3b717836daed68254fa3735af7f6b169f655d439ef8f41c792e57296c78b926a4e8e8ffdab6852c96caa33eb7603d520b393dd8ec8c0e67353af49b0dbf913222301951e4505e53791093b3d3909fac5c5b48f8c88c0ca4af2f34a4941807a6547052dc7208e26c36c44a394e367d289a214d53b3ec60f4afd6e16170be967da55a860aca662c30b9c1e04c1c04fe8ffd45c228ff1f171f9320e06314631b4cfddbcf82d3519c547a6effd2bea64ca347cb72cb2a3335d1b4e424fcde4999403e73fd06e13133d0ff57ee175fd79f7eb783bedadf178ee07416f9daf66719afba797af883a7a5ea08acd0f799cbd0f3b672ac76e5399c3f59d08eb78b15caedc89b857e578b42c70cf3ca241a4c6611c391bdd3521ff351db5dbb56410e34de3eb9f64eb3a4c338f8fe388f62ed9e2f0c53734eceb226d59a4486b372adf746ec71d3f5a9227ab78bdc93f9f2de3ad9f04dd735aa8c8f6f57cb57d2f23d9cc9ae77d82f915073ad773933d7fedcc8396af9931d8edcc32e8387db0dbc5bdc532cbdfd2ad2c0ae9117a5596b45dbf077311bb04e1f8b8732d4434569ef3dc0b9c37ee07e5d6a73caab0b9f976ec9525ed891120626fe9343d41dd67bde5dde273d0d7a0d11147b61649e0769399da32ef69d893ddce49ba5728fcd0b8d3880fe2aee7850dca816e74a6a2793a2886573af36054f67468ded3aa9c2d9378f6fa5d3c2b0b257621c13aa60933a71b5a9831adc23c7d93ae8bd5d699c59490ded0b74e03021fad48e3793e038fd1d694d82ed495f2887df1ca957ba3d6bc08b3fc1bca216ce5616466e03d26b6b9a619fed5f2ce3036e8d8ea93c6566ef9406202cf301737985c0f18ab94569690f77e7a91f533a1b1896e25e867a6f083623ae741b2cee3eb7d3e2326db12dcf8c35f98a940a3809e7e6cd069c87d0c7cd9514b9037b01dd7798d0573185c9a5bc351bf4e38a8a196340703c331a5cadb308570a70f98af380827d28e94389d40a5b4b017cd32c1c5a0d40c5d9930d73f356b616ad89a9852f16ac868782cdf901203980e9896cfe37bff4c65dd3408d3f0ac9f5da4fd547a3f45afd2b44c8867a04eb4eb2cddcbc5c939f5065ad2da135d5b1c0d3631fa767cefa6c58c1a7f9105f130ef76475132a4e11ea1112976a54012d86d2ac1205693da69295946b9c2baa2816af40f5ace7d443520e1634c5599d8aad016df49fb938b717f4c2dcea20ec937c331a50a5446054f8f8f7366a4f8a9a523799df57446823899091531a5b2ecfc96ceb7cdcf2e26fd09159747286d428c017dad64aad0f29a4a8979d0b7b37b22b3fb831fe8fa8d35634acd9d4210b82db2f05c11cdbd7fdfbe16d5587fda988e34f83e7118c364a468535371443d53619788d3a0a5ab8505cb08a967d4815193b78c75cd12e12a9591f8fc7a0601d8e8ac87aa53c7393fd898f0dbedaacc7032205e774d4eb60b2ee355bca5e1dadcae20368733e2ea5a68f69bf7f36439639e6cbc18ca5dafd8e6eb98362be28e1a8fd0092c8b789f09037a44ac4092af8f64c33f32dd73c46b962b71f4433e797dbf3a123220dc8f2ed8639679eb7b47c43d5507a8187a43d9408ebc6ed2f546dea8416469759be2362507d2e910d9f164ca79983e20dc76f9db4dbfdfc253a5b5dd7fd0390f4b9e89deea3dd45b70a32bb325b980ac7172ce33768faa6ca3061752b2fc6aaa0a75a5aed54ccdd5422dd54ad176a4366aab6e236f53fcfefb2cf7bae74fcd50aa77aef2e08e56da3dfd7b1f4d6292367f979f17f2f359bb341ea3ee34d4b3a87316289a3b2fa3f3e7cf3f3e57af88e7afab135e83647c1ebdeead962bf537fc422bf185b9f8922e4479f1f75a6186eaa454bbcad2b7b435169a9a589ada2f69ea3f222f9de6e9759eed44054017f1e6fd22ddc5b7dbe5989abfe12bda96deef2038af97b3cd2ecbc7f97a97159b3899d107d322cbf2c5aed810addacd88c5decd6f67db6235cb77d4bac58eb6c36cb998bddf6925109595d28bcc535f45def0f2f2fed9d9e5e5f6f2727d79b9b8bc1c8f3cf575e4f983f092feebed28c1ddc96837fc95129e9d9dd0dff86c14743df54de45d5e0ebdee575defa9ef75bfee7a017da4ef874f7f7db2ebfc7b348802fd64107ee49799fe8adf8f46c1d3e0a3dda5577f71e9e1cda5b7d3f9063b9dcbe525d5eedb88366c5be0e5a5effbff79d6c1aefec60fa8a9a3d1ceeb7e43393f0d763d4a7789a2d57711a6a5ac6b9fea41adf726b484bf779f7bbf721dbb9cf1af3ad351604aa11ce5fd13fdf10f2d1f3f55f243afdfb4bdf68717dd7fa38a7413d8a46f2b492393942a30fa88dafb74e0f61e97fda3fbc5b781fa67bd30eadc2794eea7e8e1cb5761e5dd9f74d7d3db975fbd78f3a6fa961a5abe7ffbe26fd5b7f26a377c3ac2eb176fdffe10d6cafd2650dfbd79fde3ab6feb2fa8922fbff8f2ab5a65429f2736ab617650b4ec16db29fe9de02638f1536230b2dd727c02c2a5a78bee9ffc1dad8d6596d1780dbb34c303fff2327b1a2c76e58cd52ff43dbdeed274b09dc953c32ba825504ed45a8a95f00fea86273ac922cfb3cd4b517d852d232b031b96b5ca6f76136a93b4a86c60b50d74432b320b065c75a762fe201afe4a757fa2abb8573f47a7a855b158dd6e35b1d9a1323191875d72bbdd2e17c193d342fd42e9a697192eff0545e9af0fa3eee5c3e5e6e9e570116f8b77f9d1e5dda97a22b9fdc91f823a50b7f89777f497465f3fa0bcd46fd1e9905a75aae2383aa5c578793a51495c996abcf068dd65f1c978f470aefebce7460c76d2425a84dc00ccd9348e5a19b1c83bbba72df3e4cf9f7efaf19f0d6704a68e588814eab28b6c20bb756fbc5ece5f4ee3f54b126bfcaccb5f0461ebcb8b8bf3b3dda79f3efbeb9fd5f9d9b38f8fb3dda77ffef819f47959ecf23b73e879212b7fa1399ed7d197c2e2bcebf1e4fb86b2db04aa7af77ae8de1b95ac15cab5489cd336fa45f4c0f986af75aa4175fff99b2e3656bad88418aa562e3d769874cd99d3d654b2da41df32d929ed4dfbbd6536c6317738ede492d7983673d9ca97bc85df619f4d20afe7eb5766cbbe8f9241625b14fe154c728631a18dd6709f1d47c286b2e29c46edfef8f8aff273ceb766db64d1a7435cb0ef23e34a61bb5d12be0ba0e2383e86504d2c2c712d0bb50a58543ad7f9facbe809cbdae0d5b1358fa3e5f07cc469fe1aa12c3e4ef1af88f39ae4dbd7b31c997ff6fecbcc1f0741a522573d6254236292cd4361cdaf881b165995d2dcb186f2ae25abe3e32dc96b57f4fba17c50a1e5f0d9c8bc37b32c536e15379fbd7f1b4f20a8a3658a6bc88dfb784465a4d5942f898c6c44c04f0ebcf9606936255a43558540d7bbd910ebd979312459fac81b51e33b3734ac37bd6dbe616958c682c794668cda4471df7495a3a54a0e281d8207ff5ac6e5c596660f51acdcf78a8c9883c175746d45f7385644549e1c7b4198f436f5c4ea3aba0dd43a9a507d48745b9b25318bfe29d5bc0e06de9fbcee75e80d69603ea2abaef7d1c8d3eb058ae1f5703a8a666862f726f67117f43794d3d5b258f844ab025a0ebf99361f1f2f633fe9ad88c82eb658eb014d55f4d62600cd6874f35d8fcf87dee8e3a017b49e37dcc14210de070ffb71b1a065fefee19aa6cd2d86709dcf97eff25aa7d0f2d599177ea911fa5e794fceb15ff15a2e1738d868d1d2439ab58f133fc592b7221d4fcd144d0f2e32a236c4ba7ec5fd777c9c518d49f44986716f332dc65b3f203972c86947516eea9294454e63576735bc1d11974ea2bd7d5fc4eeb9534a9bd436d7f3cff7b2e29d17f4cb1e2411088ab1a622d174963b04e8b3f24e77df4b1063a11c10b71de277155789a896e076d48d38d2ac683a729a1f592fa6a1f8225e64b37c980ef311d1d732b7eb4a6e44366322c729d13a685d2cb594fbc4b9f7ff4db37979bb4ef32f714abadbbd24e6e6df71fd1913d90aa1323a9694eabaa0edfe4d91cc88f4b2d2c7914a4eceada665701e12f9b7359eb903e52a2775130e2c57236e32bfc1d224fa9d0f41a9a54effceff57f9fb4e0124a70a1fc377c181f2166e79340bdd22cd348dba89725f91142bf5c1e1750c758b19781a4b3589c6d56930a16940231f8d879311e8206641d4f133fce09a7668fccf566959590b24ccb79cbac7ade49ee6cf3e8dc6340f44ef8143f131ee8bcdcf5f7f15b51e57103da86d9e7160256d5d823dcc1d785fbcfdfaab2a5d0e3bd00672a9f9d6e4d222fb4341160f9aa585efec11946cd9d87b27ce649fd4ab33f017d1442d8910d45ea855d419fb8b40f9395ee6e39824df7f16f95d00851ec9cd5400564fde8bb3ec35b1d6dbaf8acd36a7fa0c9a8f60ed305bc6b44b64b1ea9c07618ea54c548e532143e796b6ac45991c9a5b5ef74c823751e14c1e57359f9a7d3322a65c75e2da76665f1301478e6d437e306fda43f2452684cc50cc97cbb9504cda2675714d960132a49ec0cd52ed4e1ffd4b36b5c5219e41be048b73a08acb4a1569d2d10e7bab3ab50c9117b10d2d4ffddb7a3551d8c0cf7ab456b2de97af6aaa19f0152d2ba9cedb1d1faf4a6253e3d5ca23a574304c719abe87b6725cccb6f9ba5aa25d6176b74d6292594a5d6ddb9835b919d0e4fd3e087dbda3dac6fd1f28561a7990bad89ac82ed97c2635b43d02cef25d3cbbcd759d95ae2b89fd51fbdc1db429ea3e3446cee70779de90b94f7adf609f62ab3b3e703a45c43c8fce886a1ecc1cdb28ad113e177930bbe9984f2902ecd3a943ba34ff9eda5eca0cef33de9bfe61b54974982bff1f769293c36a70905f2ffb83d8606afb0dfe08f35eaef07a2f4262f16b8bbab99a174443b15b44def3f848b8e75be29e2f9e9fc617cf45e3503e3e81baf1a3a3f986f8b3e55d1aafa89579f411a55eae44c3adf5a1fcec541ed2853cbef054dc1c6b6f58cdee57fa766469dbf1f18d0c8e07e5e4282af592d0135eb2c6aa3553539332abddce64556a400721af859da87d0ee55564ff8ea4fd6db9d1bbf6ef42ad256ef9a67cd5fa65fc272eaefbb4e5d3de9f7a5d286878b7a90def01ce5bb8ada05f97ad302549f811553457c59d1d49504bbec01ea7bc5787ba09efa3ac6decf84bd1985915f3a14ecb17ac206feb34f34a79a1d1a31fc8e5a90aefe995f952f59e86e8af008b660e8123df98f466016da2a579b5db2d7b7779725d6cbfaea6c58bf9f2f796a7cbb6949bda43acc8da88a53d6a49baa45588c9cae9a38db5d660914995f7c34d07ab83dbb6d66deb449efa1673e126bab11def68eb6eb490bb0337b1b6d27325cdda4d93981e59f6d2e51c42976103bf5b6e0a543c505ba86a9c648b6d5c2c36c1a04d85f5d78a943488ebec6008692aa90a787de7382823c6c2ef64a268ca1c1b988e9fdaa207e525c952617ca8ea24a4fdf9f8e05bfab4a988e3c37bd94192a8a216c01be7e0bd73d6b732acfa2c4a068d7c62f74809475ceaac2fead0cec13a9d749243afec7635c888f588da64042ad06feadd82c1e12e4882f05c9d1fa3d7c574f0550efe39cf3042873ee282b201dab780a152a5407af80ecab3772a0e0627e76122a99243a9a87ae7e1f5e0effe357d70821faad359f8c97186afcfdb06e850c7a6d6b8a11c36e61a9cdb49348c4730094846a2ada4965bd51eb7c8569aea95e366dc56417c9cbb6a41ad36e8a751dc2fe57967fe4c7ab70b51bca44895b4a79abaa9b4ac0aabc0289ac2f222eb76cb794045b24d23bf0975b277a8f2d45c9f8738910fc205099db1a178ed87b1ac42866645fec08aa9fcc4d2cfc660b4cd43a3e68d59cd6bd9deb7ca8b3e7a728e0d5f352833b144ac9a4cac6a92c86a672d542761f6c65556d213d6cfc982da38c666d0afec762da41653d55023adba2e1f584a63553346c31f3ceccb1e4ad442ba876691d9b32eceb8a70c456aeddd0ff492b17ba76c20a2d6b278fc639efab415bb4aad9a59024c6d88e77c25bde4a654b594c120e78384ceca30a155833d2a763c1887ae244d63b21ad4e4245a213055698a273c90e3de6695a7c5b8c8b3c158e49390557a683f9ba9468f99a97a6fde534fdf1f714a7574bb58e7e972b2287ecfb3a3fc7eb5ce371b18ab1e79dd58baf4765110d3f006ca97a60ac4112f7851133da1b943725dba7d750beb69e2ad36ea3ad2f4f1cd169c08442f3636f0cfc092e085ff59a06646f820616f3886f0c13bc6708cf98c21e24d7c1c048e3232d636daac7b5244ef0c3d612d274ca972e871a827dfc23ebfc57e23f23c267c6367e3454bc6a2cd0791daedfe2a3fe77c2b8277c3dcad87c3463e005d6c2d49741fb2e95a4cc5f06127338efdb88f07aede32ed466cc66b4e0e3e96a23f71a9a5d4f49f187a4957f61b1f74711e4929c8ee61c2046d96108b4df4e0e8b6c34fcf9430c1df6df2db6c194e63c5d425fc4995531d36d810eef0bbce677c501a3e78175ef89015ebd02b89b0a79d0660c34bc4a8f99e1e77ede375feae58de6e74eb2bdffefb50a2fd5ed1a3cf5959103ef0297b9bf261783e8af0a7a63850f1f0e3113100f49748c1f013fefb29ec5b1d03499d14020bcfc1679883fc21ce4570c1a704ca4e64f509ad1639c07fb42e157aa1bcc5762a05d02b93d3c7c140d7ce2c68ba3d1ba1e29f8ca2ae8f9f01aa8ccb3f53b2f3207cf6d4f770b22e997dccd6ba5966ee027cfba97cfbff8ca8fa7f692408f143c4a556e2de582bb4ad9c0e8aa7c54cbd63a6da4f3dee037d3c843c065888213768809451b5cbc3f4f8f847490e8d36cde1899fc2094c6eacd3944f22a7554a9f24c189b96603632a28c21fdb87095a4c85a5ce1377b43e26de15135aa610ec383eac716ad7ff8bde64d0b0d9eb541432ffb1f931d54eac4f9af57aaf0f20ad0e5bbc2d1ca303ff576b414349c5d2009612e8549ca4b7d42b913168216b69a976716e68ec3ea866ababd8b4fed70b78aded69c1d4d6ae72bd99ec63733411e9fdddcf1c6f2cb171ce0790edd06f6132f0f32e88ba270f06e033d3d0bc1fe41dbefd55dfd2f4830d606ee7591a84ded3f2a5fbe2827843ef89fb4ea6533917a5a87feb243083ece676167d07721830dda867ba73ebbadbe5769e9a9cbbe79c77d73bf14268ee697635c98df140d2460c115317e6d3ca694f2cbc07331bf7f9c927382bf6b41111d7c4742f36bc4c77d1a0396d3a1d575a70263c6a52483d2a3691d198ca9d0c3c67c7f35a76819baad8b186fdf2a18332b5893a0531bf5392b43be7d8ba6f78871e1b7662153cccadc0308fe6c3d508e2e874303fbcfed6215a3eaff3b594ff325a51572d666c410a7b80e5f171a5397bbbfe61da100d27831b67c70f6f7ae87ebe1ea9c9f1f106b5bb5133aad72d51441f3fecb3751dcd8673cd7d7df90aaf2af79ce62aba26569a4d4e16d115a86014dd1d1f5fd17642bdb1c0d5b3919ae3eac6b1c7192e46b63bba5d70c2f47fea162a83be8ace02a86456cb95cf4624d59e383eee76490098b314f980e2a3e11d0dee76d4174f06cbb96c883253c7ff7fd334e855d819e28fb7e33f1c71dd506ec6ffac09a673b6b4934a7f555d37b62751cecd20896bfbdf30933923a9fe3483f3d4be65e72db5facc0d33b7b6e14ecaa07e1486881ed4c417878f209aad0f5289db970c84d3b70e01d4be014b20b991cfce61163f8c55ac88a82623e59655b332f6e3ba3ce41e32c7a56bc1386241e9c0d17216fd1d9bd470c23c4f86a3e5143ffc641fb46dabc88ea825dee6600fa56fc287c5721b4edb14bf38e21617ee69d37ea43cdc407754db00ca66cdc4265166c4fe5c0d4720a335df1058d490303781190d732a533427c1cf38a8360676e4e57ecc2c8dca2033237bf83b2a7ec8b7244ff1bcc6a9148d41bd8d2dd606ae9e2271846f1c356ad9fb402e71831352cd8cfdc41575a0b1e2e312485db49f4172b57b5e8c3d0fe5cee2c5e44099da5a29664ee1d004e6ef79faaaf803dc9a6a185ef4b3e511db88e02c8973aadb5eddcf67215ea002f577f2dc5abc139f592d0ea627b1b817942c6c8ceddb48af750569dd24262815a4d455db785df182778d1e97692ceadaf21aeb725a39c7949dfe5c5cdb8a8c84b8e5b2d5ab1e5abc25b1c630cd3ff47ed18b5308805a2b0de51217f939dbf3efca6b1f1c67a703bac06ae8b8375de724cdfe9b1ec4095bf5b0f7369f4fb4b3cbe6f482a93d09b2faf6c3894984d42747adbcfd1fb4ea49507fe27bb51303494d2be35ca25f99d3b3bd3257ed75730db4dc3b9b0177872a33d48dc8e1435bc9f20fe911d8b5d54ca6e77f6ef3b0953ab4d4b66377971e97ce6ec5d33ccef2755bdb7ed18bd5f6299c90d1816d897f6e492c564dffcb61726ca3cc74731e257bc596e94d3fe27a5687caa4129043993fbcac58fa80e2a5461f98910e20e8986feaaa4283adb070e89fe92422f34c1e6baf1d8de8303939479afca69ea294a086f08b4cbb499872ca77f9a2999be3ddd34fd8a5277a16c4f533fe98be5f66d9639f9f7fe0f3d9b6ada2d6a531b275ed9f9c8001ea9b6cb24a36933f9c4db79b3d4fda7361131733c149468a9ce97e63ddad1fd671562ce1fbcf8b3f59dee37a4cb41bbf2b1264ef96eb0cd7c53c9ee0e13e28b9b26414cd60b35966b7b94de605545b6a9d1307d54c3f97f4c6686e059bd5fd2a76d0558c85cca6ac71851d6325c02a0657054eec3a875a376a65205d97b5e877a35120a2711d58d3b8b3f0daea69fbc4d9a8021cd3150a37ea37c3e5040fb4cb74fc3cfa41eccfa798fb3e96c8349aea4c722868b4a0bcdb4d0355688d2ee50afb326043500e6f6c0eb02c24c95cdbdbaab1247f1095772abeee9ca9c3be1df1597f59a815cd6524d8ffd47463800aff444ca553e72bba9596e0cacfb91d1facc544e9f318e23e0f948ee3b2543b7bdb1e9eeaf7e174506ade82f0771aaa22b07dbf2f27c54d6c3600219034395dbf07cfeba717493f810b70979d5de580a034d6b139ade3aa9349429be71a16bf44e71c652da41362d7efcb93b344f69d4145d61f97ba7bf671d66263e21c41dbb3a1587f5153174ca426664e92dc34e609396966dd9237eda93a177bc25c558d1fae16940557f49e05bcc40878054d80a422e055ee390d4dee02d91e1f4fad803a85aad73dd9841a720a15291583d4d1b5e267cdfa3a46bc9b8ac56c298a557acc2ac6e2a69536a3630cf3914ed8b2fd87509896256ee3166a4af3c1b8bef7738d65201204a3c138270c369fdbd8554499bc202ac1899bb22cca097b1589eb7762c168d8455b44251094d41f733e00b231c73fea8aed1f7043ebca417bb15578e754c111a932ca10021de59d4594867a451185eae4f22cc733a40f2aa6d19a4e567459112b25e8cf329a98b6ac704a439d086fe2a79e9a96561cd49e70cad2e14d0427a0ce981a305885d4532b3527b91ad9ab75940e683afae3411c2e49a20f06c35138096fd8c69d3878805b484a1af6ab883e5eab05ddf8570a1d8b17d7d15575225c43f89cd144bee61e5d0f177405f9f3465fcd880fb1675de0cfe5020550a6d7d602a69adf5af2bb9241b8a13bcaa89f333724467757549dfd073ea735970ffe4efd3b0bc2391e9154081ffde1156a38c10faa27ab78cd0d8619f5606d8efc96cae41f846b1aca81aec1843aaa0842e37432012888638c7e5725a18a37c3724e9248df33075c433e530085c7d49d40cf625f61bfa4b93c8191007aea80e8cc9ce714071a6a7620d1df016dc132b14e48f3cb559a94ebbc034c281ccf77a2e80a8b0227244139d3ae75f270a62f4ad032511be4fb517f7c51f40b8d8a516d6ba1db1a5005a8aa4483e6b42d07a3be71d44a2d07e2a4d6dd2ce7ad78aab742fa941696f4741e75bb05959cf77329b9526e6ecaad68c7683516173423a41a7c89ddcfeab28b93f3c0802ee8dd98c6840fb48a936792e5809662e8797b07ddc9b808d1b05f14c7c777659605111adadf2f72796ad5e3f6296fbec17e6ef85bb38f730dcb09765f7581b1aa160738e402e7cd7512a3aee51b781dd2622752b989bc334f6d232218b4a86eb1b2de4557ea1ea4866d718d3932cc77e973f53ebaeb462294c07aa50270b5dbf5ced5efd1bd599318976bc1181323239adfd7417f4373ebf7e3630d09368bee871b3880d1b03169383e9e050f4b408fec76b38655d2022a527f0616a8b3329a8e1b1a91258ea5a19af767f872a1a6f096938e24da216c116a7317bd0ff640f38229c10d4a3b3e5e9f9c28ea82ad49ce346bdd8d368a12a2be6bae922d2e91e26efcadba45d706e579fefae24c6b8c37448cb6d4b6ddee96fffaf8893e17238f8256ce2d48ce6db03774a450b7446269bfa0aadcda71a4da5974184cd18ac104e5630d12a46db4e5bd0bd4765f5add63af09c2b149378dc6626f46758c1e31e8660098170edfdea106ca49e0847d24cb99674ca5a8c1e38866363070684643b5696d2ac2dc5cf5295b2aef1e7b2176c8b1351b8862c7d4bb280d0aaa5ecbbce3a2aa0e1a46d4862e05d7b06584dea40a470b5b0c7621b10fcb59fb0f866d6908bdf06a4b705b4be7bc9798023306cf887ffdf215e8807fcde7068116d6ad4385f8e3b8ce672bac254b90aef89c9e09121b3446a503867f6da89b2b7668a56812a0be01bd511d6b6097f7177c905dd1f5a992b85c19c1421875d3ce7d11fdd4735dea8dc3250965b54dbea071453dd1da02ea79db9059745d21ace09ce791346638e33d781ccd1f6d9376f4bc32fb60bbc3a7767dbd323b73a1ced1c67169dc1cc3e3b713d7fd6e3159546e0e8ef4f4f2898a4c692e2d036207d99a8a265587e6f6e35ea794d15eb96646d1adf165f4026364a48d77d90de556354d95a24e87662c14b8157bce030e3fe78f98c7b6fb74b618a25b26bfea5f004569f4d19fc4bbc053de9f44f154eafc6a1a27a487ec4b226c2cfaa71deb5aa77931996e777745b69d7aeac0597b3a1003b5b06e89a63c7b245cd55fd1eef24c7cb84a5bb686c5766bd358d176ca0e0e4e63aae6f3bc163cc660f43ed06e496a1baebf3cd44e62ce45d1d739ace82bfbc2f8dbb1a1d5a181d3286bb56a9546f7ba66ff50ed78678d11802a089adf41adc74346de6ab709cc1c9bc0ccb50924fa1def61e6b8e0551f6d191273b58eb6a535987e34244e492036576bab5d5ab8e67fe6863e2e9f521281be3546768caaf5f3d75fd18aa0877c498fac7de7d65eb2e9e5ed01cc0bdee44a784f736812b3522310088552bf6d047be789e65616ecb9b30104a91041bde5c57667cef6c4541d526b0e472daaf5ba2f73dc6105746a7276eceeee4c873289ad507462e34e7f7d6ee044803f723ab8f007e1f3cbd3cbf38b1df045de538adef0d7f04f97c3cb9e1a3d7d725a6a827e37fd05fc5617c72cb1c7528b1e70e42af63e90258ce986c11704b8202c62d33defbb49c398b7259faa84537edc845de30abeb766c7364b91230caa1f3c71ca27766c1e2b1990d71a8194c68cc427a9c5de64746062e10cd53919a319e5858b25d167984ac1ad49144466e762039852c2926554b7be668ba4c13083ff64584d82e3616944d2d688ea5462cc660763d87f6093cb36db3b3eba66e439a8853543e00c406992151c0093c6c2d05dee1c40b0ba9a78e95cab11797695ee2280cf6320ed526ba535abee47d205985948efa889a23af0f4c5f9c05015585ea5bcf11a7e93139bbb41e58ee129e230069ea4b6e2fb307ef6ef1ae09ad9cace397776fb21e8a31f9e050cb2db766ed6d1299b667424535a160e5f84b616c6e5772fb6e82fd467023d4414c17f4ed4e1f2a751f72218fe7a317abad370444f197de8656481df5be73a31570292ebce005627c1c6ec454b258568d21e2d7b6e3a8dd72fb6c45d134b7d517964e45812c14b30be8be8e3c150d4006cb3300a3f3360348a3d457262ac8f8f0d6b0c8e2ee9095efc006ab334d0d326081b40dd897dc7a28101b521befa88e6e5365ea468c06280d51d26ca0572a71b062706fbc15faac41893f1926e81dac97890d5bd8c1897d644a64e040e336764d1a04282199c9cd8ee81be20918beea4556cc1982b7ee2c29cb31e2ecaea0eda39b07120fd8e5d7697eddb7a0540a072073ce785ed24075a3d3ae7150b91c94a992e4e7d94a9cad28a62bedf570c56b9a7fcca672653495e2d2c08ebd09a6dd6a2690fc87def07fa975785bf2046c7eefba5cd3a51ea5a2deda5aa542b365740b6b400b77eacc9d6beffd23950c302522f22d898f2e27b254b4f7a7ab3835d22ddfeb8d816b31dbb099faad7d1031bd2510a3e1b1483970daec123f0d9207d86e3bd7e8594c34ca78d922f4cdd00946228b93b4e878974d64aa4058f146c9243a449349a2d37b98bd45f6575b4f7978bc98f833935892ce122e6b9b1bb0c389f125a9f7b3e3c2b4f0b181099e74a36ea43910d66a95ff3db6278256bac700e3df0643011c3196d235b77443fb01333ca3035cb9e41574edc6a747d5c1eacb88c2e2b64d886818a6f35e618b4a01d97fc885e190a9ff04a307c8aa176502b877ad4439dfaf8585f38fd32d0e34fa28f1f70240378ec9a1d0328362aceb2769ceb46ec08a77d953817447048de958f19ac96b2fcac1e1fc3cd94defb065aba166221acdd9bb90bb5a98beefab954355b1e09436fe0da88dfaaf2f5e5a9bd86a97d68315a31b6224d9fd8447baab9e45e3b4be935ded6ca5bf80f3b67a0814dcd94e090c17afd3398230a4d6829033d50311b0ef642370ea5addb48ebbc69421c6c424bf68f253f50c287dbec96c38d464e7fa0abea56dff8742337ade3f20eee926507231446e0280638928aa5cdaddfbb7a042436c4bb55bc30da01d4b518af19b566a0b797c5d67127348f0466d83a4586669911158d5d7444789e54962c8335c7a3a8058f297282be24252bed71f7568cf83f0df8609358e88cf8b53a7dcaf884d30a59199f7538c41eba6bff351b13733a875a20e5ab52f506c52c6dd8eff235db31e95c1c9e3e30acecdfa2d3cb37ddd349b9eebf2897eb83d581eb95adbd65fdbfb11a5555cd8619b71dfb984a8812bc24b935a1b23615873e92e49a54192586e526bc57dae5d31e0fcb1ec767d32708d152db667166b324ee127ef75481be39efed2379f0904613a3c0d534acdb9d3e37fb4a301e4ecdf9588a1d21052bc9968cec03b95daebe5d7c1ecf366228332e51ad492ed85387e4f3e5fa3d1ba0d003c5d15372d6daa6381d660cffabe8a1b2079496befa0c3da9e44d6d9c98bdb1b48a3d0284c5831e88a4165da8c2caa55802323970024c4c0d877bb1fb6dc8d6a6467a2ef90583d30d27af0c6767c1dec14857baa285afe7139c0c015bd7d22e335d2c427bcb29895117011edcecbe89c48c215e22181b45750a4535092e54fcf4e4646fcaaeb36a76db77750e63664bc68e1b73cd52b332126ce4a4b3d7bac1b6b857d1444e76d82db592ba65883be3bd9a2ddd9ddac908bce96e77654c627d53383e68cdac93b34962fe53b1ad04ba28a976ce3331e5e5c92e01daac7860cc8b69f447e5f4025be80c28f26ea9e955cf145a0f3fe57cd75adf6c6f49c8951beae715d0c3d7ad66bfc3a1b7ce37cbd93b2897b3e5827e1c6a02c8b3343f925507d5b34e9b7923850f19c15379e39828ef07bebb620b5efe6eb1dc16e3f71ef6bbe504eed5b56fcd672374aa074c19de0cb3e881e4da6d5b97a544c56677f1fb4d6be43434cb595a3d54d76ff4ea76eaee91061cd3262b69b3e94d072cb09d52e863bf495415fd445dcb4c5e3e1c13fd1bf98d622780c46b0d41d6d721a1cafc20bdcd8b4d0e3aa42f993796be653102fd1d483f40b4e431d4fd807b8c0dcd54aaccd9a8eb61e679232e977139d2325789fd37913826b64a803654b1a068066562703d7cf958a83a3b49a1880d690293c4556e84596f55b09527064735fb382efb780cbf2ea2eac38f47fd4cba957622da08d494fb32cbdc5e4ea3e95e25c3f35fe3117d6748023d79c6f7200981cab943462db12ef2d6aeca0759d8be62abe9a95e668533849ae9311c83b24b2994d039f12338bfbb9be66d76e030736c04d670e465a298e70288fdc87cc942044c6117fe411c3a331be60a7fc00935018ba6856bbaaac7722321b251c530634f906230d1d392e91c0a084f4ec6bbddc44c4ffb9ca6041f9c3310c7c539cbcf05dbf5cabe93c133ae727b5db9b53a0128006a7d81476577b877ee0a423d60bfa557106eafb171ca029ad805440db0187cf596e0036c047671688ef04b5189b0ba276a65baf995532da16666669544de86663b57fcc94f71b10dcfd57439cbe44585331ce88c91aadb0df59ddf01dcf9ba919c21723a67839313e733d66871d630bcb2378ceadb41f2e3e34afa8b334af665a55732355c70c0953147c79a4c720dae00ed16a658eda9ef716e00d7c7cbe5786c9f043581faefb45ab3260628db59818faae180befaf66beda9f5d532ce0013f60f78c7b7a61508d07f043880c479b90b10cab5e16d2a9dc68b49aef3a9a5b239943652ffa0fafacd0aef76521ceb9ae1b1b0359e1c3866075e241b244b2fbf41b91048fe0efd851ed2000740954914b94e53d0877f0975d3975185001ccc5fd74833b1ee1b5893d6f1b9e8fe4dba5ece660163c7be2de6f9f216fa16fe2cb070e0cd9607590b5ceb81616a26343d2c967a591dc7f5c030d552d94ce4e85387c84b2373c0cd22b075f96ab4dd41fc6119c074052ca62cd0be2f4350aea5072ec326a6a6e4e3ad67a0aeddb06d4e7f8ed5a7b4722bc3bedffbf6d4f04b4b3f123e4fabd1146edf577c68f51594f70b9894c9e17019930f96773415be523362f967c522ff0cbbe43738bffd2a7e4f95802cb6f05b8380e6fdb4a2c877a1689325962fcb82ec96b77d0f3c1c3fa10fdaec45f874affd857cdb4b371b86b6f156daf2248c132239b7dbbc9f2cd7f0d83aebb3f107fd8a2d085d90e0497fd1d5e1c95fe9bfd53dc0355c44436298aa0087aa1da1532af1fb7239472bea75224e03917d42e9c2fe9c76c6624125db9aad682ed3da0acf57f7ba96b84276e1b977b8efe3e8633ea5259248d3e2277c0866c24f9dfa44e70c5aecc29fe76c7fd3603fdb7b98268340d4be96d0a190fe3159356e6dcc1a91729e36529fef3593a867dcd7511bfce462f92adec643c71f4e00226a0854088feb382d5830f373897d0a6b8814c1adf8504d6f47ade01b1682577da38f191fe48cf1e9e57e773934d7231c307e1b9dfac31727ff424ce872abf9ce313cb071281b08ef36764946cd3bf1ba258ed9b7ca3b81056ecda38fcf256b5526eea6a1d24935c988bcedfa96c93535fc2c24a98c489fbe3d0f3df4bcdc31fe4c37ed7a72db4dc36f0cdecc401f0dfefdcdb7dfb0eec2a1618b1e6aaedb2a46e8a93648e9ffd7bee9f7f07d6b5c5398dc711730c238c33e57a2a28a7cc4be854bd48293b5386bd8627e28239550de5f73d049ed60415c2c1b9b60fab19785190bc41aa7a632e6531823d8f8004e1621fe1c1fb3d9c0359015aed90d023e50d7236e3d713af6282e6b39fdb1568ed7c4eb986c23ed9a5ec6b70ba7c4b4529eec43733da2740ffbf0411a1c62092c57fb329e71c789c156da8d964fa1a01c703e653860ba03aea0ad78f5153f6200a009fb42a89cfd49f0d45eb03fcf24929b4095cde6c0c2e83c1d9294d6fa286a9b98c980fdfc9391920d53b43e8d6f03043a9ea8b1e3ecf3c65951e58866da2fc18e22497dce284e21c50ced808f427bc94e5370a2e11372510a0ff020c41f69a068f5b4622c18c03e559bd28bbe1947e8b6da54659ece19a5a3f6851cdbd96d949273784a80d789130430703d889c18121afb7b886370099739e87c0f34d2c602b1be4b7b3fa5d1d25fda96a8efa5adec2dc8fd832086a0a93ea02a89c30f6b949964950e8db3c43e1e38f971f7e8258ef822a5b0217dfe007311e41c3e785056e4db230fc7bd5e3e4ff24c5f9b108721915b22b6e1ab67ffcfcb579ffdf9f5c98bd77f7e75727e9e8e4ffefae7cffe72f2c9279f7cfae9c79f7e7246ff79ac71e49c0fc02f38f6475c97a13bf258c8e59de270899defd9673babe659116d7f30b44dab5a5fd5d3da946f34bee26f7f203bc532d56f7f284b4ebb0faa164f59f31b13db13ebc19cad4e22b689288d4ffbee7624962ccef1863efd60923e161bafb173984cb3ee3779c727789b3cc326b4819cc52afe8621fd64988a1f192e7ac06c56672c3958b832d9f7e44cc65d2d99d6957e4a6be33b716f830b610013cdd63a702fd978adfaf8a711c1594e625963e4f037bac5a2a601da488bd2e2c31f7260e6703c407561cea66b19070ed47adb78578f8d9b45941f953594f96026c3cd6d7e9b878f1acec6882acf5e77e37ba06bf127509f9aee649c1958fa753289066a62d20f2a692ad622882d9f95c7241cd4ab6c6c9637eb153c70482e5442cb4f8c327fab716e1c551582ea586762d480937db15c5e6f2c264e6520f2329f7d1fe6cb468f1ce9d81f4e8619cd4d3e224245226d966a3071dd6f29a950be311f4329a3ba2236021e901ddaf77881f199062bf0a0e274eada1e325af73fa7f04a25b2e9e594b9027ba71ee4c8e4b02ebdaec9a48f9d5943259b01c7aca9be4a25084d9dbeb40d9d54fe592d7470c731def32566307a5561fdabfa427a4e8ca61e7043a26c24028676c3d3b0752154a78b5d72fdead4d02b44e98145141d6738c1ffb31149395fca25d532613fb4345b32c1c6bafefed17cf4449565008fd736a5b8ebca74aef2aa1e46083c2d01d70e69ea2e8893930c0079ae5e6dac10d39ad6c6e181d3bb3a1c6ff42275221959320080291557e67020723acf53d0f26e57e93b9e9ad3d2c572ea432877340f2da226c9949b29d5f1faa775bc62a976e3b60d765c7252607de5fb311431d653b5b4a4fd4f140c83ff7fd52f9c48e8819364797fb2297e872641db62e051ff64befcfdd0bb038f8dc622c1e0fcc70a8ba4d2a8f69e0d7423f8ebc8fb147d13471f776afa8ca6eea224287ba353788b00a427a301e4f8ece9656f175c665dba19e6af47fc826e77c1a98ea2568d8acb315c39006c10ed02dfebbe45bce1617cf2fb7f8f9edab0aeff8c86dedbe58aee7ec0d8d2ef67cbed7639a78bafa0a91ba99f0e45a7a6ed10c641386565cc281a3509d4c03d0c54ad8e63b55843e906d129750e3f1b87fe324ad939118967084f9f35b1578fa8e76fd7be8b30e11c31483d12c5e6134584757b050546cab8b93e279020e824cd0c3ce0532288c475547b4584845ec015fbf8b85b04c0b16573675b82a07e90687d4d39b3cbf6c35574b5dbe1569983f4eba85b40a1932d8fc6f0ebf57a9f7aeafa341ad3b6c51385eb7addbd32062640d024c192aa7d8a42a1011ae3ec6162b944303b942d09e5c81a569db03b195c777dfc76cf83a7e9f0d928ece22f8c8568a2dec288fc0a6032db78bd8daee98aa67104d39f9c639fff123571468121a3413bda701de0b6e384be8c1c1b90e001060aac289942704c835f38dba94a490653c0d9a1ac2d9264451a67d386cab956c6f8101c05fd8a2d47fdd2b5c5043c0c42607cd0cd01f1e54abec096c69c03dc39f9f0cd4253240cde07c88e411666ba003c992af3ca81a3c80771783530f508c26290304c318efec67b8e3c4ccbcf200bed186b88c3133f894ed929288457108718fef5c9eef294125fc5efe25d9ecee36093ae8bd5961223eef0af979bee29c20e7b7192ac77347c056dd5bb98a44ffa7b4bf9ee92acd8a5f1e25dbcd9b1d2037f66c566bbc3414d8180eb453c5b4e76e36282c842d43bb8bc5de7bbf172b9cdd73bc1feda4d27ebe5ed6a37a7054b7fd6d7bb798eb78bf8dd6e79bb45dce555912230d1ce3026bb4dcebdbddbdccee98bf7bb2ded9d339cab6c8b79be7b47755c7ae53a4f9da098492514257483424d0d85f87c1d4f98ac8aeeb04a6b4d10126388557b0de75186052d5db53a7f502daccaadb459139536bf3211852a5e904747cf67c4069c5e3c6757d58be7a7fad7387e9ec61f5dc41c588abf3f6273f58fcc7cf908fe93336a1c9f4cfd342d48005ec569ce6af18ab3a4d51ecd7a5bb006d1c120795be11c6cc4d8de743b9fbdc9d734358022d539f8211a52ffeed39733a2fb91f73ca4c941ade31f3941ab750fbda08f5324677f465ac53d9a4cd251b40772c33dd370b0111a8b0f64a0badfa601956e1e481a9b5a559d504d60f08b7bea79738d2e5d2cb9e6e67bc6feabd4cda2f756bc436b35891f9b09ece2d4125b8a6940cb6b13ff4a796524acb43dded4b611998afb84bf9311a937e750e34cb7d91ee16342ee8ffaf1a372d54fb42fcfdc4091f5109036656078982c8e1e0454311c9e2bcf04529b53d716ab194d7a73f511dca0cb00692335cb27d44ef96a5ce4b38cfa44d29477c4cfd320489a79bc92d77c318251773c9757b247c95b730d4f375a6092409627bfd797f47a1d0e9fd977cf7901e9247ce9244d97b396b43621bd66d22a5fdb3bb72caac7c78defb76b5ddefaa2a5d0dff40c0d6b6b79303c0396afe78db86d3f3f27c226f9f0c568dfcf881b5b6db912915cd3f028ba121a820bec0cb83095e56bd93cf83dba8ebf98f26d5612f93caea9f538fac61f8f093b38408804792908db73aa073e1bb4c4423339e8631e41d500133016bc60d78a9b98dbbe0649c924e82d63dbe000ce311dcf10a1696c3008ad45f858512764cc215602c4447c4894408c77accf131c546953f278a4182ea416bbbee6c8636a96222208d52c63a74c117253e54d66cb249ebd7e17cf3c251596578ceae5be0d0266fe26c4663cdf1dff697079d7ed9faa296e79269c16fd5a40eb7f19784f8d16e15b2f7a43522d986a508f41dd021a66200ad55c2d4bfe7215a5c04a94d88e6b6aeef262dd5f8b23d4849abc1e016406bdc938a84d0e741204a6476fd4c481ea9a8cc24969a63191435e247f2822e2a55755a1b55dbe23f6d77f22a2c004b6ecb2d48266f48f39ad8ce115e0bbe39e59abaa70f6a939d8f5052fdeef882b10d3fd49d09d83711fd3eb33e3393306e45b5494049c276f0b87707c1cdb46d9a083a62110aa792fa034bafe0050095447730fc1c324f298beb0dcb3db4d6d66034b23e90d2a5e7979161661e1fa6a8cc5e8b35c4f551d3bdae3ac81ebc84d3a1cd32cd5eccaf171e7ba990bb27685e76b580599f12e5c5f0cba7370ab01a0a851555c4f91a29259e555bf885665af8bc472a8572710088f8f57d5dc1a4c0b1f9cc2639c68c48db25c4311073cd7b5e22aba19ae35a852c6767eda307d42320f6cdc73c4a7e07a38131a27c456e29ed424ee09400fa9ccea249fe0a893e50daac3140047a83260029dba1412af4903b44c8cd1168627359530d269215064ab06c7cd0aae43c6182d30aa62cbc4a0acc09a2e160ca99a223a83d74d943f0392462ae7f03834aeb24ca9704b9c287738169ce7681645020cf4f38a19c7752ca21b0fcb4e98919d612159829b21c575fefe54cd75daf9f2764332d1b258405cd25e92d4badb5d46a203fd59ae825d3a2bd2eb53b5d0dfe836f1cf8eff12579ccc6ed7b0cc5872a2e1afbdd1d300ba9f9edfeb06bbe0b4861edb341fb8711e9f57c040c5acc2ea4f2a00dfda2c82c87b0da2d24559e48d424dab227f8902d150cea67c3406343b650c2b82522390049cff94f3075c3e15513a036a45292b044c04189c83e09cc5e415ea17380c6918912035b12736adbe75aa02d5288f7f1eddc47601754a145337440acefa2751aef256a3565f6c376398c4b65ab9ef55cea61244e5f0c346097c6f2c28387651534b2f1692d0436bffb09c3a8bcf3df4bbe84136739c5dd73d452bb1629c9d16885d4bb562083a7b56c332f61a3158a7d662b5e0ee2acc136a7c617db2397eb93425ad3545514fada57a1b51dc983bc154056ca46419b05589b96be95a87d3b343bbd036e0da7a540c6a194c5d781283b36352401dc9d82c3232d73d6ac1bc3236f228e2708ccc2292bceab8aad1deaea67523872983ad2df5368af92b5e6dcbe82682b53eb1303e6cf82537ade7e8199caa402d1998cfd491c17de2d9703982cf2365020b18b66a98607f0102f1552f2916195b5eed764b75f0db59691af3c0d0c54bb5a43ee23c6ec45e20537a44c35461cc42194165c636cc958b6313b233f601901b8da0102808a8cc80842b8dc1d563f52b0df83c9a50ed30d87205a66e6e5bf772794bf3f84c5d817cdfaee074c6172578cd4a5d03bea6734e3934a5d3418bbdec92a639a228554c60613057b388f5ba94122e8e57c80343825f53f20c3bb7ee2a33d9ab0f22e939d092c1dcf89cd59ad6edaa33864035e886ca8c9c2c5d740889e67d6d4cd8748cfbc34b59db98b013676d61b3c2d82e4a9c651f98e857f5897e2558c35367ae5f39737daae7faf4b1b91e3ccc1e99ead960569deab3ea549f47d79c9a5d38a71ca9af160bedf2b217785d33efe88eb6ccded34b1c97c062c0c715a2a3c1fb339a3719d109f1b3c4727600018af0553db36268ef625cc15b46e230c47b8a60548613b2f39eea4a3348d239a016ded3a79e58d775cae7bc16cc7c19c347d1fda636814e4e681acaa4383e3657f6345f58cecebcb48321563e8fd719f17e486eaecd072b65a9af5e530bd72d00b07c650a63438001d0da7a6ce04b6ce0d7811952f91c5f76313978b26246d72dbdaed95846723445344ef53d99a31ec7efd3d4bd8a23ee3223bc0ef42a8886345e24dfde44d7d258036e1700690d132ba16552beb323c709ec9d3381c3a1807a47f388c12a338553bcdcb12bfa4bedbeb3d022d14db7b143a1f537a5fd10e52f80c8ebe8c62993aabfb6d61e6bbd84e0c0e47c1a7ac1f3b3e363266037b0cd73f473c03fa0d5b1e8c970dea826af06881e95d0e0bc95aa45e3c1b3f063e5f441b42e69383d5f972f9c4483d655b8fee02a0c2580324ef8491ed6ec1822ed72081c209ceacb288796559f34b1e561c58447c1b2563529cb8d509631adb899e97d60d9ea4b8b4c99ca0210684bc09476a00bfdec36e108b66ca7280eff302b679dc55554a554bbdd8d32037ed5bdc1aa868ceee09ef48b7eedc94ab68102da81a28fa86124b8d4008a305574bab9d54217f9dd6e37d75949c580a4ba2f8171a9f09520e3c2d91a68462477c4130e18f466bb24992fa3a9246b215a5e9c0fae1c528bb64c70022afb46512e44866118ca67a37267a114b284698a38fe9d057b86219e5f01a6be7c737cfcb55f70d04f33f2954fec53719e4f186404300cd27c3fd0d8755cf91bc5e38536eaf7df496ab410966033ab6fc1c89b6b5dde4ace86a85411005033a8b2a8ce39cd9ee6d8d3f2475b60a1800b396f544d16f486fd0790876f1c5c366c695e4fa8e7bccd706e8567d30d7bf60b67c6b5eae966a7fbb8b8f72b580762213e046879d395f2aa1c5a0130ab8eaeb0ce237d605d5f51f6edc35e821c302a545cae0559ae9c71e71a23f74ad77db7abdc4ab5b4cd91acbe87a92d4e73561b3795ba02576e67f898188044cff0f8d00c7f88611d8065a22b36169e3f2df341583a53dc307532fc723ecfb302b192db728e1d52c81f94b76dfc0071ab52086d80d1041d06437431412761d4f7eb1d5d721e23013f91cfe17da96b1be839ac9b54d42cd963b38a328342c10eb2d595a40499c26921603e2c9035ad8ecdd68cd8f171f5be32822a2e67abe9cdc3a6bd068523a9b2376c5720041f930b84c3d950e1d552a4d70284225aa762f34dfc0d354b623f05c06791cbe7e7e644bf1309145e85f40a86954112ad1452d8c062ec5a0377c46aa97a03c8e498e0ac3fe558485d1201015c02b54005b950596d3fc29683eba11f18243b92d360417b10d748c360158c37a1a115e59584061c162373fa4a1c19676871bdfb99a31195c035981861510e48b6b7633b7d9eb427e7c2ec178936619ec29b6a0284862a4a16428f392c47a931a9065cd88a53035c1934ced53ddbdc11afdd9f228467ed61348de67a371d0bb45e8f156b628e3aabbdbacedfcb0b2815f2680acbbcd5c60056d1a57178d06f82b07c05f77e87499a80c6e455b92061c3c11cee1e31b0696007de2fa3be1b5ec55c82e95fa75a9d861d5cc949bdbc75e79afdc2beac0087f7e6f936fe47fe9e4f62f5b59a6a589fc1d4026e11e71fc66c7eb9da845e3cdb52baa3849997cd510abcc41926f451ba5dcff0aa42118fc42ee488e9c2772437c220978b3a6270f13cd3e99811c563a9ea118c3ade6ce3f9eae81df12388bd934e3dc71d4499e18442aa1c215d4b804b1ee1cf4b6aeb11bdc63f5cd7b2a8c17d3a4667c655950be6cee42b1366a667321f9497349b75290877be57ce9432f512f271243fd47bb382bae567fdfbcbd178bd9ceb913d1203be9ff5ef2f474441f39ff9ef2f479b749de78b9ff5ef2f47dba5feeac3cd738276512ba4224c2a9db2fbb53ee0a24d20076aafd49a0da8ecd4aa339608cc5af7eb65e8051cb6289d679959d7671bf10dbbeec21c500bc4ee83b3e04452c9374e2af7014c7339f75f6ceebf54727fbb5c5532e7fb5ade651ae71e9a5cecc4eebc655eceaf3d24f252ae4806dfd61d00f7353d918c3f1c4e167975cbf43a3f46189867f4f7e3f013fafb2c3c93c9a437eef001bed588462be2030e2a7484cd87860c6b5d5710d82206bf2a8410c90347475f3ea52dbb73eeeae855455fe2e9a3046faf707ed05aa493675429165f68e04f5c7251ae2744a39ce5edd683b138ed8f8f95e41cee09c3a98fb9486cb5b63e54132e58e23708c224f23540a4b8ae55c89a3c7c00d14d0fb3f2620f8a8424a7ed3bbf5dc830b90c4d158ca4c42515c6063a43b064c50207e6120ab5f6a427a5b39590fd0eee656a53cc6f6715849f0a50b5d5d33a5b115c26585511ab62f3467f9ff1b957bf2646f8997007703e392007a50dd66f2feef256dd13b5e2470cea156e458e40dfb4014ab0cfd98136cbd15dbf82200126af45cf0fc3060ea89c1981ab8a3b818310f6fe97861cc4c8ace0074be281cfc034db12f3b632a206f196454dcdc6f083662f47d6fac13e724848f3a5f459395fc0a30f567178633091a54c9588ca9da7871cfd68183ebb0147d204732b462977bec803e2a2e2186d01eeb8a21712873f7de700e63e38a0cca19994cd765385559bf425cf1f11a290a03a299b2055cd11e91feafe55ccb000751967d0147ac26ac7037f4fd5a4a0ffa426cd96e9ba747402bb78b97ab5920c38604504038624f36db28744ec6889546dddf99fd4f591e1d09596dab4a57bec9d869c6bb684a98ca0b932b785b15a871e5f13b9587bc284cdf2f85d6e1ed3dea0f401ba4eaeefe4037da33f31af782baa436dd67417a3e8a1b28b25caa8bce852449e0620555a62efd79808166cac506f8dc199eb622dbf0ba6af24baa8901012ff8c704f1c97553fb41f182bfd0d3c1bf71c4abd277611ecbf5069a17e113df0a9d91fd989692b9c7b0150149852358e9945f8edfd261983475fc1d4db3cf0541b36afde6fd3c8292eb1bb7ec5668e1eebb8cd0cd04033078fa456c6342f757c7653e5e992a1db73ab6bdfb4d72d368fed8a6267c17aae82f80f5fb6437c412da3f218a3f64243a53a81c059a9a4f5ece5a9b5e10c7c5b85da87f0bd45406b39bbf95f0caa3e9b9134b6970299526260d332a5e4c5e12975ad6571aeb58df33df04bd6ae5361edb4e9b3fbd029b59c78980bf97afb5ecaeffd66d08cdcb1b046d2bcc1565931f33daa6300e57fbbba85f11632ca98a6969adbc68c6f2baf91497d50db8a392f0b29c7dae46e7d2e1dd6b659256159d94c87be6eaf5b75f1f5cdb024e59838cb2851a606f56564dfb497d2a94d4e68dc9c0d4e6edf9a8396c7db5d9de3ce722c6b6797e301e2ec34d861f3047ee5b18a95933031d3d29daef270e050f7c749b415491e5da5adabd00c83eab42f24599d5aaae31ee5bd54044a2bed89b0e70a656d4ecf6eef358626519670578f15827dbfbe9126a3167a205cbdb01e555583de3ecdf0c216ba8f23d4a6b1462ca012ca49aa8052731674cf0f10c1ffa8d893f33e7035cacc7346ba6b135d9caa3887d26cc7bd6f389abb4c98f55e2c23861a3f6f7ebe57cb45fe87932bb47b391eb70b512a879e9cb9b62a938b2776f21aa56ce6f22b8802503bb511d3b5cc39d6cd2c9fd2f57a5ed7791596af382cbd0ecf91d9c3096522d034f12b34dab6586bcac851b939b52b6e444a3167611d39c238001294b2bb9f71fc4ecd79471add6838c9830675ee72c490274c6e1aba8c46b48543f919891ca3c41a7d273b0df5d80a48a08104ca10716d19f28cb47ec172e0b78da3d3a3abefe1de70997523cf1ff0a1fa8e6e02ef74a26ee38a23f0737a4f6237e25f0d2f2f37a71723edfcfb0e86fefea003d3d65d02cbd5d98ec16e76d3f5ae984f7662040b0730b802c63bf6a8097cebbfc8518b82cbd38bd349a1ee909b9812ef9eb36beb4e9ce00a754faff4be8db0478370f86b34da45746d9c057a01257b0fb357c07e5d9efabda7c1a9fa5dfc1f9f3eefc00a76f8f2d58bb72f2e87bb9393608707a3cb11ae2f28c5136af68b187e0359a03e8ba317f11f71d52eed695fc6554573253a8058c40715b78d66dc89c4b57ff7b66b8e26f0a82f1e0d3e36a98a675995a2d5abad3f84eedf56fd5535963c0b0e1a6720d251543828516cec6182ae77ea75b566c3c9e8b5e39df95e9b7be9f32f1b7063602493e1f928340aa0baaf5be0e6fab9ee597df0965462bc94366b5518a0d27e4d4da29247183394afb663e3e3c2c0e0f59923523529ad4dd9dc982dc4a7819cdfc1597a0a13f05ad0fb2a3b942aa48167cd5e4e6b61fe5b031e7bd82b0d26163846d37fabfb3ef51bcd0e24d27672203aa5ea545df28e8f5df31e3856dbee1073ea0cedcb8d6d5fd59a8b91e48c35573f690c97e3ad679c0004ec2f61af0939ffc461a5ff0ae5f57404260e6ff81a4f82d071be490795a0ad6ceb615d3dc1ac9beba0e2458a7dcbfac430c34ad59bd3b7f6a1988d947e334e7ad440844ca978d53f0915aab92725d6bfd43a2aa944426a7273f98acb7ba755bafccb2d5de910c7d4529baff89771c61b7319d75f866554d2145880da9d80efd9e2c9f5358daa8149dde9f5455cf20e092d04e14c8700c7eb0b7082e3514593bde253b53c3957371c1f91cd451d07fb1bb112dded960813d2b0a6bf61dba8d2c9f4f8f8de98b9d9808f75f37563ad0a9cdf1b1f04047d0acb911bc78680963a4f048e33f245cce180995fe20a2dd96cf50a0b1faef5357796ceb962ffff3cba76092f165babc71065050c721cce0a3352e8d82b79ec5f3b3e30af621099c25088e5c5bc3f270a3189a84b69bc56ec0ab010c75a7f022c03b08c535033f1402ae0fc3729736498520d27301fd108cd03215d6253560c0b1bbba3de46a960416b0df662b03b30952990559b3f8e95f726554f3fd4cfaaa6ae14bcc37c3eb4066f9c53921fd733b6eed2d7f2122e8d652e3e8aa2b90b8314c7ab0ab776418a15b00103fd3d060c076db4d4f962e06c7d3ceca4fed2a0705ac740f88c26834ac4d03056e3d2ef318b724002f5c70042dfed181bde814f755102e18819302ebd4b98d24a7764b56e8701de583e7586b19247c5c72b0baa81ac4c4438d7afaf15facff6d33beaa7e74fce2f9e9f3e7976e14934b7457e480050da083c7a145f0593cca5b3828e26917b39da5be7562f63efb9d775016aa9068371dd953cf43f8b2b34b8f4e2ff2cae74c738faac128889f634bfbea9d53df16510dda8bbe7d507b5da077a43cf19ef6f8a5fe615ec14c13e3fa129d2ed4e828cae8e8fffc621eff9214c0939281de7328da6bb9d64c00e4b92674b5e139a6e9f97b9b04134b337a5ef92d4c82127990d20c3732a539de2f8985da4dd99154df5fa506341e25ab4602b3acb435bfb9df11c3098b05791868f54d791eba44fa4a326cd97eb08c02601e39f00ca96e4aaaf319b19da3443b879c661bcc26263bec5305765684cfb644e72dca0266241051e565912547e625912e45caa5371a7ae8982b49c076675e66580fa69f92f6cbc6527466325d522bd67cbf9d7f1a258855fd026c2c78a6d0bf44b2b98eb500235d78c6642d658b48784fb4592b4052eb327860389b6ed97a103058ccc37705abedf8827d8b01e6e78fbf241a9046eade3da211e2067dca2befa22ae29bd54cd0aecdc9ce03bc8d52dcffe5a7f64848c97b6d7fa757c8dfd5ee2ccfd5f5135a2aff97afb196b64b1142b51e6505151d6fec7f56c1c17d41ed40bb6ca8578bc6db5baf83f5f5c25303a8a6e04c132542966435d4d58e43c1216fa1cace4a11e52bdb643c71caed9448974bbb7bab3545ef50d70c5a686a7e00923ee093c814e6302d89660ab1272a4b9d13a1067260c66e73c8c35d014b01ee350143dcc9db542903173e8a0abee15f6e13f48156406eae5cdce0c2951faccc54caca1e13aaeaa95c8c776bbb68cc69619320701a32d9475e72e76e201d6d0451cbe210ee47d038580d2c46e9a4e160f0d6642fc1866c2484cdcab88088877bc7ecf13ad9f69cb5bdd3fa9f44f5db1e0d7e657c2f34b55644804a53f7300e1f7895e1035821b3f4a3c75bf5683aa9933f9a1d5ed3db2302bea4037c66935e02c512238fdd45b26518f050b52d74583579880c82a36a0bb7c8a20ad7abb0c3db9f20c95c5237de929971284fa2cca3c7dc1c4c7631ae4990e40e051cfe90cef833130e36670620e8dc7106d6e4043927a22d1d2a411fc7ca70ed6aa2c34d6d9fb63286c88e4f869e9889dc34f39df3a486007a359fe3d56ff88a3074c0e6a31e0213df5d9b7af7e31370e5ce157ae96872a5c070aa139df33fd4c2f195983118b011cc881224b9444abfdd5d64d00f92d65a3af1d951c624dfd23a63eb49fb0165c574623318a86016ffe1e47f48fd86662ef25bce911ff15a8cbe8a3b38f8e04a2125782ec89cbd30baf5afb9ab9287b49ff9de5f14a58d4ddaef2d0f02381fd9e56dfdd9a08848f75c8c1aa194fcd54ffefb1ed8040713311ea34657c9a6fa00616acce53f56d5c43b9d4c89683ceea3e1078cbae41b7fc2e8e9a872e1a6192585bad211c0b20c10436e8b1803282112d2fa30436ebc0619659156bc468f76b273532b2a6217bf53da0e66abdd86f05c7b072dd0168baab43e81944c7afa4fce0e1aa0ea23a9e2de36d08b0d6fe92887341db373028673d7d177967744f0bcb7ca99fc34260b3f91c5f479d8e932d3f52e601609d811045bcdbac58459e83b6ea51a22a0059fb27a80cc30fb344f80669aaf93895ab7e7bb8af8a7a37d4d06cffb2ba7f0ccfd602c19e6990d813a401166c032717ad74b0e7884c5678d92b683ba9116f188c36f22a8d318fa135719e7fbdfcfdb303af7e62445cfbb604539f29622966058e2abe28b22c5f7ccb36ea6d4124351f737c0cf35a12386d357ed0197ce81b9ad5abe23e9f7dcd5dc3c8b11ffa24d59f7c67baef03e913ecad529bffa09449fd2b989f7fe8a36925d4dab55e91ec5edfb272e795d12d0275f507508b65f2d581899da77656b1b959f12e6f472a8e6fb74b03567ceecc525cf304fd6f3dbd3f3dfb6f0f5e2dd11481acd268c281ecb017be5cce57346bb3373a34d52c6a3ef6d9edce3bff6fec27fe4c9cd100233f8dbc672b5e8fe6e9dc76336de0de27ce4ba9083fa2747c67fb6a5e0e69e4715dd3eac74e029b85f34c5dd382f803077ceaba363857fff7404c9f79b6766e775c57f1a3cf3cdb69fac93910a5693c398804d362c44d6f0ce175e00e10e78db95a85cd2a67afae75246c0494ad4c74902d3b5bfc4012d5c6b730a06346cba87d5aa38416cc704dff322017667cb1952b8d6aa88117af5c0030e2230c8144a7bd5cce66f16a43f36b93e3081a34f75a2ad776b80a00cdeb320f3bd48f0c851d34b7f59c8778fa7cc13b05b7dac9d969f8354499477ab2911775fdbc0614b6b7b8df3fc4ea4dacde320a142dbbdd1a5fec1246e6de619b0a9e9cf69b633ef07f88a3a66091d4ce941d97f27e09299dd2be2f311a012b1808e35c9d52b0197f13478f6aa50d075522d91333fa83d6cea603cef53b6da7c7e75b94eb6e8760a55a2825c110201ac7c7d61b635231ab6d2aba1964c841d31679a833ebd5f72838457cebc0e37d630ce6248ccb5413297813ce8b85849d1be326be979bf2b9f3d47c174dd0429d877996b9dfe4caf96a1c946ea293c1249c743d2272e1f7d67bd91068774cddb30337d9ff7e5c9c0190cd71c25e54530e334bfd3b65b805b7f73a6febdd37935d20eead6f17e29a4005c2e70c5875fc120b482ea36a03f8196dc5f2ce1bd368134bc2c8f2c9c03bcfe75e88ee9dca9862bbe9029ddd7c90b93923c049a36b898dc2e6e9b95bfd8f15a38f079a992dac42ec078229a595d42c4022a96faea2243880fbb567f1e59fb48ee3d96a1a5ffac35f83d1d34bd8bafc440f35a37db9790a53187989773ff3c207f9d8317924d9e6241de6f128e80133fc97031250af84f5ff1749b296a5f04a4ef55db12992620619c09b3297e82943fa8c9cab9ed0c7d45412efdfa082441fb10b61487ecaf586cc41ad7e8ba3a127fc2815fb2dfd23be95fece3780e53d1492424f433b0849627c8ad9382ca9b913f3317dbc7eb1f5cfc082fc487bbed6157563eda77c0e39f2b7b819c50999d28b613aea26aa9e7d2964a7490362958d508638fe38e3a5a3b39e5e4cf81008e7269311c3e9cb1a456411c7ead05bce322be1335474656b508825475fd09cb4423b629f35b61592ea25606de5c5f1f14f3ec3c93c52aafa3af6b3d2a4340818030fdf291c7ebae576720730aa964b3e4843515b648ece0207bae8ac091f491fe892c429a5d100afe5694b0f2403dd4d5e2879b907ad76fcb2a4ea65f68b81aa2a4fe5065fc75ba6bdfe99ca68ab3e41b0b9b320e8fa992057210444989479e6492b626d043b433f1b68691261e084f3f382c127a1c7345f68d63947233feb7f7231ee8fbbd1b340b31fda4ec59f746dc88cb4fb4fc69f3a83c388ca6047af3335694fcaf01a9a65f12adf98bc3bcdf4baa29c1c21db5141fd194d09a7166d39970f3b8d5a3f9ab3e9f88903645c1b25a48cdc1e8bddf028615ce3bc22b35739c234cda35284aa0421b1493cd8898c594372760110278d1ac914278fde88ed01edc5f4da79abdda845a5e36e7cb9b57821090d7ba4efd4c788cf088e99f3894799411e39fc3ad041ce6cd0b7ae996c6064daa616d05d02deefdca0859b8d7663375a9dea06668cee2c1bc86df57462ab78d46153bd732f84abd15ed91028e143bc28e6ecd3f525ed057cc1901d0cce4a1bcabcbc1d17b3d9b7ba1ab89de5f77f5b2fefccf51b0e8a2450ae7617a13b04fffdc2de2dcb0c8441e70bda37171b5cd25459def1d5ef5f023183af109807ded654ebefd89bff41f45d5e586aaf069eb9a24ee511911bb8d7bd9fb5d9658b81f5c7358b84bfd4ee63a372b31a450ed15a899c5958be0b432113942b3a9cda6034e63ea2ad704a33632a468f668039148d733b1d95dc4d6a6623d6020dbf57f0a5659d69164f58018e13366a5930c8c38232446dc6162dd50976ca50a779a443dda438bcc9895eb261b544e9c911c5cb5bf0144158363ef083fca0899579a5f34abbccfe3563ef4ccbd83b4153ff079a2fdbd319dbd95af0b352ffe731e0161c13a8d5d37c0dc726d5f1d1139b5a4f8068a70cccb76523ff0c5b183bdbf3f7262ef0158e81782e858fa88d1b836c8d63ff4f0d6f75301165d68ce119bc9ecbe19718b49a88c1d08676c9f53c9ee9cee7a0ad4f624ef48423110b3f41bdca08b90e451a6b13fa3300ec7c5e2ca0a8cf69b650ff870c485f1e210d3dd19b12a727d47bd438ea71da16d5a992ebf8900e7ed674b5193e8a669e38513bbbc2e03b34f55fb16ab2e97a7bc93894a5b9b64e3a9b963af0800236897716cb2a24f27ea08972a6fe071b0e0c0d83f02cd0be9b9ab09909c15d63b5ef2d545b57e527dd3760a5aad2d2a0263c6913334d6af46dc0a67883ded9f95367a0456ae83d39a70dc50b1326fc9ed7e821bb6be83c555613d8d8cba6c062a695075e6be0b18ce3db5385eef9d9d9d384041314403403f098ba6a34ffec95e7f5531dd05df9c94574ae15de902a3d8de90f7be0b13dc3fea71815ca9167c5ea8743c4376cd2a524c34c270cd4d9c9ca5ef24d65a27f96204395e26830c70076eae6fa2cd58ea2abb9237112f89c0da5b56a1ddd4426f38315bf8a05b6c3132385bd89d530369c9d04672b6394b6d40132715b1558357ba006be3331843d28f3f2d879f951c58bf8377c06624c33bfd413b29a70bc3d9106fe57996778b66f59ba8fe7b2c74212eec76dbdf62f17951ecd2fa3caa34badded32ce9fe30758abba04f623e574e7ed710958fa5812619b5608ca70eae4f087ca84fb437414e39ff73988d903d4ea5773bfa7bf28c7fcf9ca3c1bdfac65a49548803d70cbb55942541dd74adbe3d1d3625a9a981d0108824405777a2831b6c3361b09d78deb916edc6c384a4b0912576b81376c23465bcaf58b261e31eb8e1edd88ed844cddbb39f5b335231e00ea6c43336270809e8022e0823bc6991e587d3c0fe6e3999ccdaacf488482f613be18655d6819551b0af0dee5080b9aebb7cfd24850c16f26bbe33b7f22947a52d151c938a28690ea0f23b7a51226ff4b0e53ae988d17f7b97e78b689228375d15a1835ee2bbb02d769fb6f7126c7365c1cfa2d438c76d701c998b7f29aecb1825e29f2776535162501e103850dbcaddc9050761d4d92db228934b8e3538ae717b69c9ed118375bb6e1acb482b5732ff6d754bd035ec81406ee2bfda40d2fda684f9b4eff76a7dbb683a10e338ecf1c2dc0ee865b722fb686cb925754964fa6ce8f4e5c898ccd53f7c1aab3375defecec0d271aec6e48efad737bd7a52f67e40bb697957cd6fb3cd57da7ec97d54fa5a0860a4c95f8c83740859ea54fefb68a7daf7fc2991aec6ec7526a9fb4eb9f9450f16c1a9c6f7e8b1b1511758d6429d5d0b70099ecb8f87b10c990910a1138bc0addf0daa49432380f9b18e02c0cfc14c007147f4c390360649c8e02bb50a1215bee75eb5f9379e2014e4c1aad72ae90807fa6bc19e2d3781d656b0087a175af25a690abfebc6bc061984aa3298165a2d6a79ccfcc343bdcdb5866011f2838a37455b050d0a0c539907703671bb0f04f5f31d36eee6bbdea727acb64b9734624ff9f2bb2f83d3670e0c98c7df7a286a7c1f35a6a4b203045b1f8e644a1433515789046191ad62072abe03ed46ec956b7a5706887ee2c45c99252ecf423df5b69803b9c6dd20a6c6259976ed69126954a6520b364faa11b21fb40d0a75431e49c4d444b487c44de4fdbc1b3d3b498234fae7301fa96c68147ddd7414d19d55d9d1ad0d589270c457c38667fa202aaed8952d92369f1bff26e96db1eb0016376138e0c0c068baafbca7c48ae26093d8098b9b39614527fb11887b8ed09e147bbd559a3955582607bc5ab4f71aeff84bf02c2b2b84dc54f42f3ff91c32a90c38ef8def31945e4012050f216d4210d6dd38eb9c4aeb2da2684a2b855f02a7a9bc61c78aa98e033e2ed638b82b6fdc90dee537243863eb57e5936e57cd7bf1ec2e7ebf71a748dbb3f2a393136542c5ebaaea0edeeddc3a309741027fddb0da37c2398cd2489212099d2dd45838029cd278461bcc7065af5579f9b373fdcb483c4a6a72b9ba8e6cd0e7ab81d3f9ee99c76e07cbc5f2fc21bc525abec167d7e668c095a0456d2706c5929403a87f03ccdcafe2f7b4cee82b9d0751d86afe83951621c355797c5211a8d80bcf348d0a29db19d993b066f4766872dbc6cbf9bacc15869d4e57ba6fcedd37bfb86f9e8df681e3c8cb6e4970afcea8f713d1c2e5e27ba3cf1ff995849216f2855ecc399a917f33405b72a839791df077728d4805bb5d67ede0d3ad61300bf1ae58dce6fd1be0232d01b7b73e3e5eb3d452b2f0990eff70159596e3f5f80ecb2070c6d87726497d2e04dcff669caec493ea613d300341fd0077518442902741d8b6cc15a07fa10233c9a2ce4da06e06d8420c673eef65b01076511bf0d630eaaaf95ed890465c0a4b5a4ca4b2a365e08a384ba8d7f6ce482e83494464f66680be0ccf88299f1309c61b9858e0211492ccc9ddb02f265868f344ff3ae723445fccd2c61d76888ae7f92a6941dc2e1de063a1cbaee23265614f6613ce485529148ee500842319c9cb08922b2d2103348eea8f4d7c1024a8293533d1628a6ccd8a4c44949b685f35a81bedb7d9a8ace63890da02364d4aa57a01633bcaf50c4485a3dc8978d6dc46785fbae11002a2d73132266b6e5fe5e37cbd064266cbbad6952a98a1d973c4980a6eab090fd639ef9b8d3389a64468c11b905ce11c335ec9108247e85e597eff04789d517a5a3e4104f771747e92f16173115dc93e5b7a7a6829dc3c27e11bf6157ee97338a5b5b52dc6ef61774f9d31bca2a1c7809c5fd0e2280669483bdb3adf2c67ef729b64c4e0537ba2f08c8f3d2f6842081678ac41a55da403aa344915ceb3ce997ad0be84af99c503e0b3307b61439edc23c08341ead2b63f45be0913fbf05b1159c254d93e0b6daf9a8e0a53db674aba22041cbbf8bae1be1227a68459e577d4e82b48461b1690e5b2576901333cfa8534c076b01d121de795382946660c9bb656f0d34906b5310c995edad0728c92c30e944472ad478b1ddf54c6f7dc01ddf09b437caeb01e9b03ab880c05219e8328571e6bc92d60db391e64ae05518eebd61e09aa3c5d654559feee4ac5ca7c6ed9bc0aba40c60891023ae672625722b9e892f945c049234605bc7fafbfe4838dccc25fb3d3d5b55a24880d5129c8b481656504122b6f4df823fe8444025827ad7d3b9d0b65e63e8e3c8959e1da846ed5f66c2b69e2de9bb2cc7d20db887e8a6bd3ae74395f81a604bd715ccc4c0a5c5bfaa39fc91d343f2fccb96b09377293a807c37f870fc48087c34390423d6749f03bd3753f13ff27c2a2fad158482876b218ed95ce3cac2b4b9dfe8d81a781c81f914800614caca70920d6af3bf3c4758c150956ac5c4182e87af5962390541f11672cf19012f108d513301c2e9351795fab7732a8d27f930789e7d517bca28d8714cd7ee2fddba18b63045caaa35a0d5c2249793f98d10e6157031c15715b77ba9024e892a2c586664ad244c79ef9bc242bf47c6f8fa62cfd8b78122fc7e3c159589eb75a4f69abb12a2fc3f2121bacc8c568ee66e05c0fcb5488b6649f97aa4151c164b22670a0c3173a6c86af6f2311b148089d65b002d39da2cacba802a3552116f44d808c97b3acd45e21335de4a297e5221fb184a89fd3dcc8f6553df93826a1687918754dc79f6017c39f021643ac75843a331c24d832b00abc24698f34460ac95ec51adb4dbf3b74661cd519e538608423ee5a5f52c2cfbec682d2ca901656e7188c59fcbc8ce9ade13f8b45b199f2a158c24413de3676e24c7af23e9a00ff64ac0789c1a74b2df744ab22a56f75223509ea5b5d6555b481332279df02a432054f88d934b569048a8dd9b800606e202d06d00d679e1a00cea9163186985b6a383a80f1269560db22ad2da47cba5eb9ed78dcf74cff370eb6144f32d9a5271c62057fb9f23417fd89c47f3701f004f8a099f03a314642e547b2cf8f2d313c39e907637c024aac1151ad66f3f8985f99350536981f6086c9b02254163c3ac6267c60aee039dd49d8e9afb63662f63c96b16fd5bd754c90a04877ec63bdcae0be4e6f818f1d9abef51005a7bc95ae1e55fb3a1b642543c42cbf9997345e46e9a19da631c06c362c3d2bbf0e72105c3e93b25b13e9d644ba553bf5a33793919ded6c078107656f2217db9309f7a468e0ce88f549d8753d630368fcd595addc3814ca4c79d3a87d50b199d0b2ba12695c899c3e6ac5ec6457d964d4d7bfee865439421295320d5ccbb9567a00b59487d710b37902cf68c4b2903327e7607533a3fabd02ee2625d2da04c50f7f5cf123aebf7ef4564edcf0583793ba95a8ef978bd2384df2d8f3f36f6fb7ce0bce495ee88cca773abbfd87bd899ba4ddb43231849a9b27b311b6bd9a114cafeba4975dfdcdb44db556b654e6f6531b468919f7588240c5d015e14a166e62a6557a724213ab9f58359ed649730cba525decf0a535d056a988e154508e397788111c322c53204b9d1103a4bf8b67d1f9c7aa4c5d916601a25930c1ceb75feae4beed946a3681c997f9732797580cb7ecf7056cde0429c17cc11c4444336a7917fef98c84dd78b30d9fd185d5e27f7276a6f76e5a43f1fba82ac739d655e3fb0ab702892d09419852bd2f385b455a4e19672faee8ed01fdd9cf0eb5c9a4ca05e3a36592340cdc35dc395b7cb77aa5e6cd1706ac8263f33cead2a6f1e788481dcc9fcff11cd39774166f36d0ba11c5e18ab9fe59474782cf79611cb5b433d6f3f8684a1c72f4d169fcd145fcfc34be78ce0d3be2b3bd8f0c6a325cc569c34e0fb861c58c6fa9925a8d18205295d0cba893db6a9a3f1fcc33ae7b7669df5c6870e9c3374e81f48eed087bb627a0e5650fe353faead4c0054e2a95e4046297889ef8868dea8adf4938f04e63411eaf7e80549e60aa53bbbe5d449d8e061064f3af1225706c5102e9454e330a5ddae9348653f0dc4d0a95db0875d82b39cb57f6c1d8be7c6c4ed607826be7f1e12714ee94487c93935ad3245d604012d1a187065510b6911f5ffdd3a4e75cf96be3e0b64ea2d3cbf5e9446de8627879ffecec727bb9be5c5c8e47ddd349bfc2c7d3876d67f8d8b22c842e5becd6d1392c24574d046be37134479bf71b2041ac09cd607167998f5419830f903ca0b1eae3a47c40edf59a22193defe245a961d526e61a81b00d14ca60cfd06731bb8605bc2d51898ed5820ecc597fdc0e2d3ae2536e6d1b9b3856c2893ddd57b932036e22f4c9a8e7810665b45aac4a65f2969ae48f5663d2ac06a3a2c278a3ac4400ed250294c95a6a35c232767aeb84a16d4cc060eab7d4007f3953c9daccb354dc6e845087cdd5957123b075d84a409b266ad02ec07e98ca6ca832471c7b4ad67bb324ab3fc6548e2c4e91923d4a6804dbb9b3f1193f38d1272a2614e6d905022c8e07a850c8c135c734d1ce43c366ab22a22403e2fd077908579da25f88362f1574373fb545ed7645a43d1f2ae465d0492d79d17d2be4d959fee63dcb9f3e7de0604a9977bb5dc701697293c027610b93ee153c8b1ec44e9e16a42c2e9277cd84ebeb98958985709a1cb45b65ea5076ea3872634727817b702dfe6213f117c3d1f5848f4234f64e39a175663c4333d4ebe2e49c6dc8b312f935c5219a1893039a589b56888b839c5f38893be72e924b6dd423ca5ce5fb7d45881002ebec9e235551a454a8c0a86ecd51c1b72eedff06160837729a8d533219808403931a04f2728f630baf6a89ec0d79909635764dbdae06080b166aa05d1c6b0bc879a26e13f52e1180c3352f4641535777da7c43577b673a2e7802acf1246a7001ea3d1ef22657dd5b90e9a3c6940b2ef7b0c562696cdc26601f808d2f3f72e4f40aa16ad4ab7ac0559ef88324c34f652cee29f4f30c3f7acdb40656ab0c8289c0a3ad3419376f0c255b052914362935986aec5d3c24d687c1d703c51ae11e6452e31e3cb84dc26d1238c18ad3812125031dffc4e9130c4398975b55eeee11b440ad1b076539c8425e39ceb4a28674c1d5a492c9c466a231d1390bf1a7d0196435829f18f3906c60f0251948cb343794207d2dcb0ba1e45deec7c6be89186da40a53a739b3d2d29e1740dfb5306af058091bedf93a2d209212f6da6a9d87556a8863c604fa41abb28713d0f171d58424d0eeb3d1789823307626a731abcf8b7bd6cfa7eac030a7c1e03d657f4f6265e72eb1cff8a418f87943f7ecd9d3a2df89d74d835164122dcc08a4cc9736f1e5ef1362084494bf4d9af4ad222eb27eb336b1684eb456b2dad79d7b1eab6ab3e9d30fb42145a03d04ec3204bbd9539be5ed3acdf5089c5ede11b31bb4ea80de25da2fc8cecb7ea3e2b4b03859f5c4a27455b2e70650234a8e4a3ec8ad7a34d5df0c6aeb9bb77a9d7a8c8d286c292a751c79f44239d84549306a2d0343695ae63b24454ff0c786b875357145fc2a847a44f4640b78bf44930e8e51490573a1db0313499ffb54c8250359a581d3b3d5a9c3ef999b6b89e2504eb094d1a4a585092403c3638a7356d2dc2b699226e51efc2ee915198d28c766c16fba5caeb34dfbd155bf3e467e6bab9220b07ed95c9981fe0d8d32c7324212beadcd73c950b296dc2b50237cce3c2e88bd4c7521aea7968cd35eb9d3413bc3e659c14a8af621b3032c922c703b65a84b164a0c6a94b1a569faaeb99b5aa3143bf9b4db6c73ef112b62de7dcc70ed5991201151aa735c14110dd1a0dc015c3587b1dc6ae379dbbfa0b94582a3e6a77ed74c93c474119669672211ec64487772c2c97cd40b9d3ede21011e55592750c70fb04e6292fc38ebf45d351b177cd512e0186152da4f26c07fb312203658d0cac1e9a0a79a1b4fe0da5963b21a2df89f3159470779a6b205aca9649ea9743b804586c310fd718627669fd53fc8dc20b1c48937ac4b9c88fbf41f937d2939fbde7a8e390a7b8d7dc9f145cecf82f0f7c468d1ac8ddf6ef7a2f9900354ad731c5a9f9c8369d1bd039fed251cde01fbfa395d29d15bc205deea2fc593b2aa8db3b1d186a28053de669db62c69b7cf1f596d93ea4afea474dfb4fa3b5ebf8ee5bc11e50ef465ece2b93ae6d9494dc2af864d71efaa09852f6d7a26b494f6bf2aa67a72a5270c147c799c7dbb98bd07c84b7cff15af658c563e9b69a8187df79d364ca74f9677f46a81e7cb99bebadde45fc72bba6040d2cf04ef4019bc83d79ac4d7855bb39644f155d128b1c68ec74a2b4ced38d10756cdead1c592ab2514f133d63d1abde3e9c489069554e28a9bb520b392fd6af7553132cb5ee2dd213da505f6b486b38e3a32382c2c62f66a4da329c2771591897aa9ddde8c7aae0dce3946b098d25207363606244714a805187db63b7e89937a9545e7ace571cdcae1fc0a17d852c5f599a8b88207f8144a7e24600c272c35940efbf421fbce0a7c71d68de4ae3f358ebd88e142948b23a8704fa7a6a7d594666205ad5b03a6fd7fdcd74e291fe8eece21a5b39c40a235a62d9ef77fd300c96ddb3041ab95716078c9c5be51fff3619363dcfab039666bba2bfa871c3513372c11c22f89e14ab928f4c97665e482b06ebed6aef837c3eed4d2afaafbcdb043fc86436ef88895044fc1ea489398fe204671ba28e62e5a863b81bb30860741bb36521392f2f24abba01c295b9e68bb68cb30c40c5220fd67e24b4565034aa827b11cfaed37bbc7fef61beb17f4709ac8b83ca288ad2a02359f621cce40400774fcd6cd230b95a66412616ec5985bd5e99ee9e9de3ac97905b44e743b995963692cb5cffac664dbd9d53c044f3de2d8a9473aa0ea9189a47a345bc6d9d13adf108b71240adca3db053fe438c1475932930b0e5d8ee0a47275bb925f0cd5918d767e64029c1f95c1d08fca00e847120df64836e0a332e836e76b826fe382b2cfd7eb25ad17ec93f75b223bb79ee382de66225195d84bd1b9c1909fc9dae033778d769fea696ea2512641238aca140d7c246266d962a893cb4623d04c6c91d75f81f8cd96a99876bfb68616ea739c120e4ed5dfe8d757c1cebf1cee1ee867bf1b053b8fc3487a9797d8bf47bbcbcb21ae4f93f162bdc5ededf0328b4fc62f4e3e1f3d7cb20f9e7a979ba7e16087f092bb714c4b868dae7627037fd039bbcc82cbac8b98923dfadd05c83b7f3d1a764f46037ec08792ccf7fefdcdb7df54403671f4d8c353f0b7f895746564b4f2990f814c1a8d25c01d9d1b822aefca90f226105e6ee7f9df92aa733f7b799762353bfe4567813a630f91984fce2077d0a6db199f7472ec41248c0e2c49f4f4c700b6604b129e60bef7e5828472a227a8797804e50d24686e0249384d885195f1660887b3ba759f05dc4363398e43dc7bf5edd7df21aff500aad7fceec879c4b613024bb15ecedf706e10ab31e34fefe73304bfa476c9572f101e3bff59db557a5f17b45a37cbf1b60739ecdbafc5b860f37e91461e0fb947f758c8f41afa8e32fa436acc705c25450df99946e4905d02d777cd9de7f8eb35ba938a95de54a978a37e4113fb4fbda74f4ed59798e2c3c1f128f82d1afe7a3c7a7aaafece0278efe92008874797db11002279ae3f0d2ed78327a793b9fa8791d113a22fbb78b5c2bf93cd76b98e27f9aed73de185ba8197c998e8eb8e48c9eeaec810f737a442bfd29fffedf5dbdd17af5fbc82fbebd77876797a797aaabee1d7c3cb3bca68d40db128f082d7dde5e9e04fa3a7ff2fad14b90ea956f422f411837647ff3b55df2670defc8eff7e4fb4fee9a9679c49bda734343f24d1ab84253af52689bed1ce6e3fd49484b23d5acefcadcb9957ed849a53cf1a96a2bcbef172653d78b590ea5e5c671bd3c0b04b4629ee750596d12253622267168e9296c1534f899354cc9e7470a43536e8296670ed1d9f6ba6ae3fd78f49dd8c986148b00b7f9738e0123867c4fbc2520e404db14125ef743123510d2b42b1fee42a9a6af3e343a6b957bbdd78b7cb8757a3c178d0f18be8ca68b54244862026001b73695e7f15a809fec0b52850853da67513c38f0ca093ec43707c3ce1c950b6fb9f753f369c335dc5f76ff2ed96eab6e98d67f156fb0b01e0da759d2c0d1aa86369f0fd9c7e890e4aa08c07227de875bc74b591ae5313763d3778ed4fc921305d2dac6e18e1cd364ef331d4241aa7024d2d7ad2350e6a57aed105e7c55ca303b0d9c30ff966458dcabf20219b364c4f47573c792b417bc5f882613725a22d624872603bfcb5e8840f851d8d49d04f4862bfde534ad485be4a8331574b3c2e6d66a99c5c153a2031b58df67576f39930ec115e8cd8814fe7084548164d68dce0889a99811e0ffc71471a7e7c5c5604e06208216734a2b67b7f4e5af1d5e0038ee97eed76ad5e5ddc0f40db2ebbc2ad7070359cd49503d506113101c6ba0c8a118b182a16be543c029f17f92cdb4868ba74d8f29c2651c081fc32ecf9a8e2e7ec47009d4be43e80f1a96d42c0fe84ca291ec5ca5c196360c4c25c9ea11ba90f59cfc891f7a22b12035918839f1aad1ebe549d49198bef8ae704f485255338a5aed248716516538ca7cd85ef584c841bc700c9f251883fecd7c1f07148a3aeed8822d7c0995e134e89e227d423436f3b5d2fef36de2848a20974ffdc306cfe72af37de99855ede6ce14051d94715ff8493c12cf4be591ec9106e18499418034c4a6aca76895ed81b71d3e4b3b94dd31c720bba3e4cf60e6c66cc2c4378a64834d97ebdccf81482bd17b7317b31bac4267cb85dcfc21f12c5e7bd1eed939e2a365f11ab3a0bffa1159c6f100a9be81e47490526e56abd44e11cc0112405fc874066f27a7ecb59c13abb108ef7f4fee4eeeeee04167f27541c2ba9f2ac0fc1600d08a81fdf7e7ef2174fc5d424f860b2f3d7f789841914b688b8c362e149883179824b4fdde3be52d27ca68e2c27a5ae368c0eed24c0139de22a7e17eb08957b53772a1d799e5e26f473999c4a91748bdf53c98feef04b6fa1ae71178e7cec9987c40d79ba15e6110e2d4cb5cc33f0a05203bd84d1035c452f14f65098c3236e333a5a6e910b6455cbb4ebe768795832b3b4a9961b8a8cb719ab7ba092eeed8cb83d70dc910c68cfe26dabba53415510d2f3ea530e118907656458e269be85d92b3d7cbb8e17d4ecf5160fbfd30f6b7ead0d37b492cf31ce336c10ad114feac81ab37243bd5dc1a728456ce1594f3779b79ba965794b59bb3036f3ded5cd6dbe7e0f04ac390b0c08eaa95615bf6a7543b72fe3d90c589d70aa5aa4240f9358bc067cc43ac25958bcbdddbca46c397c1b62b5ab2dfedc1277f62ef2d2983e814199ba8b1ea0747eff8617f6996aec932d104244859e1129bb954ded3a78b806fa8bd1b0fc5d339a9320b81e26cd0874c41f3c1bed93e89a087ff5cdbe1a3c46ccee923deaf46236ab56ab2dec0e576a3009ad0eff0738eb6cb68d86b827a9952a18aee516f662d11616075b364f88159f8025dac757412e5f1759feb56631da0e3c90c9cc3221516cbe2d07a7bd6f194ae0d9c56d609110e2600d4dc3107f150e9c84bf38ba331eaef1f04e8ff9a812888d564282c9de7296b1dbbdb3eed7f0e5e584b0dc7bef9f29d3ce3deab3b20eec7741e96078031599a262652b88eec42bf74e6432ba850bae9af568c1471cf8962f77bb1f12006396baa52fd8aad4de7e9d2826f85deff4942d9df96421edcdf3ed749901d7528e1f66f68924a194969331027ff9880586e0b04ce279236d91440b9344dccdabe59c483ecbfb4670e2fad7642755491e75fc0e5528138e809b0167a667faee1947e215a05e6fbaddae42167228d5c0fbcb99177a9f7cf231f1a1c0f6a0d4b5649c5b251d978e0622d8b3b327969a5c2b669874ba4722a6ceb1e92074328ca83041e089a27e04bd5433621bef02252b5dcf94bb7e61421da354d993552148b244f678efef7699e7e738c546b7e53145848b4c39a8f2538d398023c878a339f3a8f395e6012429d4ba3c0a9554bcca74fbf4fb6ee47f9e58a451ef98fa6ce0055ddd5c7d7e2d773c8488e91c69573d99b15f262d40a55fd2547d72fe5be4755fc3732d1c775b8bf16c0ab6fc1f1b26881df45dae8819e0bb5e9d50f9de97e31393e6e44d41a4da538d2f59d54a2cd563997c432b12105fe9d42b5353adfc72e294fd883b878562d745ac37e759d05e52459052955c02d5f6c10b66b53c77cdb24433eb69266c587d331a1c7cd3d5bc7cf5f1c053c4b77e9f74bdfed14d74d63b6310de202cb36107fbbee5eca923645b095aea0be2a25fb3cb29c77d97989d6f88e7158c7a7b2b071b7375a76641249d286bc82e224d6b833eedc47ce9d98a3c68721a9e6bf6fc5c5997f7f37d7047e5fb335389abe84730317aa5f26e7cd72b77f3e81c2b73595b831c7e7448951b35d6f64c74791887adf86621a8ba3f8d0e81b19996783a39b027edb7814495bda56a5cd1f7241b6cd47b2399dc0befc0db5cc0c2ccd17dffbd7f72ae7038ce9b1bdf4132b13c9be7807ebef72de2a70493dba8ad7aa7eed5fb28edc37ae4966a7e1b3d5353c67676fdcda608f4a86d5918a0d32336c8edb7e4e26cf009f142d774153d3ba33ef8f8ecec82b6b08fcf3e81d993c290bf8b7e4afc198d32d033de453fe3e61ddd5e07ea7ae0d7d6fd3ded872d1a88af6849db954e84f1be8d4444f7f4a2fd7bac68fb995ede949c06562a4a4d83da11fb8750d00147cd32710f42dd1e79ba9d9b8a84fefbe81df31339b18eef846a6ee982a724754b670b15db367aafe0170ddc6dca414b95d4512ca59f6183325c09f599b964bb294407790f3e80fa6a55815899ab214d1375370ac2958bb132c79c7dafb6a332537050fe1a0caf1eccca6cbf1ec87cd7926ac877afa58e98fe54f2264476378cf7e61442cf2827bfb6705eea656817cfc989d9f05813ddb6dd2dd9e3c2b0b577ccc9b2caffa0c1e5c4984f2a8fe5ab80bf79c362e2214f03f946f7016d515aa8ac1a99c0904979abe5a6c524af7e8a55f582ae6a6a59b5462dcee09dae522b1189cc5322beb0a0178b5c9f28439bc35c3406a932748e41258acd7790b02d7c034eec75f57fcbdfc5b31f69476ef37a9032dda24485608b337da1788b77b405e7569f4034462b53208c06358c8bbb75bc42e865b7f4ffa9d583ceab6af1600c1db4a39d3512d358b71cd5ce35750d7af90d2235d9c0cc7d93ac6a7a5409356f3257493da2ba40033360523338bc315d2f9f9456ec71e5791934c886f51680e08a2c820ef872b1c85b5d39fe802941ad2f39ab666f3e623b60cd03e00867542e7038d7474a83b41ca4204c9c08e581d4bed59caf52effee1a99036a74252757b0c4229ea76512dac7ae82b030de49486e38bb5d716d30104c686c540697763e3878bef61191292ca1524960ab4f62f49d35cd6c66529e34a35412c4b15f4bf4cf8b1ce61a87b9013bb8a3ac696266eb84e30daa2813de4ba01b44f300daddb5e994d5cb1d8db5b3305ed3660208a34b661cb9c2ca1fe2b117ffda01a4be97974864e71e329f1a34e7c28bc67c8bdb257b59a70f4b859de52954e6b9d9107eba09e24d1e97f3f3b3b9da8df70a43fbc1c3d3955710a1fe0c1e5821e27a99c448af983b1462ee638c6a4ed37dff2f925db25a7e96376ccd7f9fb49be084e8b72926469ed90a10180af7721e7741d616e1e8809f8cd58b106035a67880381dcbaded023c6beae87b356b8f920013bdff5469eca057b22b0ba7d4015e82f3b1cdc823e462532c1eaaa82cc24812d2fe7ec12e000738e5a488e5add7d806f91d75ed56841120c12dfb8cb26b0eba17d70685c474791e8a17ffce14b701634a739ae7dd723d9b1e54d12b02ac61e71098f55d57cb2a1987b92e74af50ef824564dacf58c1a10abbafd9af1aa8481119ac20e11aaf45bb61def0061528fa68a012f31ca25b8d6d5b258f8242597ca9e27c4ad74bdfa9e4b1b57c1f6c76d71a5b5e64260da4d426957c090e2eea34314b47513d48e7a4239736d83501a8c008bacf470d5f670443435c055eb9eca73afb223a0fbd0e79a20171bdf0b4befdee3e33495f550f132472cd024350b85465ed36e71cedc75fe655e051c8ed8699b0b7ae37ad4f72b9a567116749ce7d360208ef3698be3fc03da108a6b8c12df92d88e684c8c2b6c2898fb0c5b92a6ed499989d52c5f650edf4f0d7bcfa8ef158394c181e1d527488322a5f557061827992abff8cb608aa744e1a8c41df8e11d44fb1d689d288676daa719c4d0198cade83ff0f56e879cf7e13465e29b0395729c72f48f346ad69fba3b86c91f2da9d7a239abdc427f2fe66f9ebbde8cfb3a87d51ca7c1381dc6234d003850076bae96eb4dd4e94c1071f28e76f597eb9cb6852d2d810d63c2a6a8d18c6bc4c9d4243554c24ad57ecdd6aa93b83a4de857518a9e467d730e98bb115dac183e26813a9136ab69d4ede629a8d684231ffb89286a13d6e025a26bc01dad599e20b097df6cee96eb0c8c2a6522a75aac061f33b1761eb2a8eb3ca0db7e6295edc7c7935e5d45dff6cc2f3f419995766743efe713ad08cab313304d1e74b2adcf23efe7afbffa62bb5de9171ac798ab9d957613a2f29b34554c6395719447fa6e22ca92a4a29a13fb0ec13103fbea425699ae2fd4157a1beeab441520d94f1cad069f856bd527cda5e9c80a6f8afa65c10959e4177b49b611646cd04f3ad58c507fa3c0622b872bb19c9968b1bc092231e9b9e78f1cd81cfc44547d2eeaa2c2e683675a5b744d1333f2bcfd98885d629637ac3a9c011b9c3f7bf6b10dd9f6ecec93201c4752d0e0d9d959f8c9d927fbabe3e3dce78e521cf1ad79aac49b889e9b837a170eaae04641d8da71dcb9511a8244d48f5f88e7211aefaee27d85df067561972b278a4ddcab4e2dd7e1ca7e58b47ef898f9de176fdf7ee7056e6695634b7b1a2e12b43ef62ecfacd551e558fbc0f33c9db73ebf3f29df544ebf7569a7970971a0c8758784813ce623efca39351f38eb6cda854a11f35f63d703b6d7bedc62ecf9b06fb50415e9ceb05ab19c0fb053b89c1474cee13a5d3d2712d92312fd43ac8b8dc44eab4e705bcb63031927cf12143063e533a4380f170cd144e4a96e3ed94e9ad984b505b5c82889cc6487455bdc93a72fc530821d9c8c9144ed1dc31dad717e2ac47cc91b5894b42e888a8134f8735ac4e5aadaed4ef12d713246d3ad41a3920af5e2da3c560c1bfb3ee281a54dfc0d089660a82126ecd807589ab569010548abfa131a0547d9d1b6acd9ef5f6ad758dd6c0a984262b826d1ca8f82cb813f888e774f82dde5e07270daaf2c3ca8fd56a197eae37db1d65899d3fe6658a7ab5470e95809c9e0efcbaef79b1c40b9ac278eaf31c6ad0b0065b041c7ca7365b4465ccea4c7890cace5756a468a664130f0e82f4780ad92ff441f367194d0c43d1d625f86d245e683363be090cb32f9f88e181ffc967cfa94329596302a56e55408811f7a95feac896cd59770daaf3cf0a114aa3c51d341c2a147e98fe56caf539c13c2e63bac7558523b9d341d678e0e757291029923290debf49215bb9b51d4e47d27a545341c95eee2cdd162b93dc24ce2d3850975013637b74b2251337310821cb6057925e749641d19f62a6bc1f32f23a54a5488d2e7d8cf81e780ec58a6e6c657bb3ead75256632cc7461c73711775f3b320898408c242b3127d1b88c016409991bbb906d8f1883afae686797b2162bfab86245dfea1fa54d8040fc130e7229cc7f742fe6010c3a0c48ea61198070304c6a7417b17e831142c55fc53e2d49898d4d3c8b415aa5765363753ffa68cc3c5f4f721ffa06575da7153f33413365a3fbbebd6a6b761b2cf0cc86379e1dc033752d9c2462104e031da7b672dd5d9c9cb3bd8436be88b53de95419a0f200c883e6f199c27d5d615235b30a93164cf0844f20bcefbe7df31673dafad718b9a6721c000a533b1110cb3d6db718d4a2930036ac9cf2943b52fb19cd6def7956bcbbf0ac7adb99648c4b069f6e3f1305ae59273419aa92f8a4a1b2ad743bb1b78e312cf85fb8f68f381291b61db2e739a53d852a0f9b54eda4ca3df3aa9c86a9f22c78f441b7a6aa70cd1b436c3dfd1d9da4c683cdda8f6a26441d7d8bfaeaca9c169000f45ae282e851dd979cf13cad9d15fc441dbebc83e2300eff5a51130f4a709222bf83ae4bb800f9226405b0e86a197e4294ba87710a4ad3be3296d26ab929042b14e67e58fb7398c079e0478a548760f28d9edca48ebc753e8bc192c36e98e472a9852f70e53a6b3e345445f960c6b162d555441b64b259ce6eb712e30988acc53d234f45d701d34b8d2d2610196a4892ce089e7aea0aee13335b0f1f3434eb01381c78a9282008fd49355c35c2a65422581778d458b2ac874c4cf887b402a63ec511b006f3eb31ccb43fc7afdc9d4cf1b73b2993a0229c0617fa9e52e107bba1072fc209831a0ea0364008145dee3c9070f4fe5cb0481c6de2b23ebcc163589625d7cf0750e18153283d723d3b7d0cac7662d0d5c407f301c0a9676aa643f35a3c4d60d10274bb720ac2705125fae3b8cee02be700059ad581efc08f59b29eb707fb65d29c1f0a040c9502ad30da8ab8c63c37ba0c2238c97f911632e2b2896f189c8091e30ce88ee705b7512693f9f2e7fa970881e87c8a5b7cbb0f700c6c6667588d08543918e5b559efd5cca2946a2f1bbb2c640d65ee7a1d40163ad00ba1afd5b632badfe97336da909ca7bc2797b848184cd95338d0b50da7ce7dcadd685632a794d0c9d467123b99c1c153e9b49674e8a032a11e1c593c9cf7896da0842d7c8b3da06306432f20c9be9e9423506b1945b9edfd8f74e68dde2a8fee3a55f428e922b64d3424b2859af2b172253fb339ec76dfc7fb2a82ba9d52f06bb0b3cd537696ca733d7f1b71aa452d7efa8b9136837e03f43c7b24f473a9f38c786fead729483e180fd87a773c002a7e58aee7fac246fc32b8aa310beb5372bbd0fc74c0ec60d9569aa5b94a0779e83c7f0bf92fe02c10c68bd1e6eb048e896c1d311f1c036f2fa3c331bc8915e0a0e72b5a54b3eff448a956a7e714fc1b873927f9fadbd8a2bfb164506e3e94a5441b2f219c02675ce500353400528a1740a871a59a38f5f2d17fd9f0e48cbfed7563a3540a615f1c7acbdb2d3fded750cb79cc3377cccb71adf7216400271a8025b91c5e24658f2d89d3928ba38f09261aeae55c32cbf5e954393d6d3239384a3c3c7b3ca1a6d4b811734249c909b1c05bdf466c0cb5a4070301162c6916e17b9557ee4c0259912641f5ae2c3c30c3c9ded1b2bad1b0496083e98acd1e629e90dc33c8747ae2b1ccecac3bc0031be990b5946147051c5a30e7d4eda2f149ed83f1d87e81a036c4704eda83cb34b95e1d8f06bb6eeb57f61bb65ba8cd9e8153bcf7f4a9a70d55f080b28685fa534fc3e67117001e213a408c357b2c09e345f6269f8d4510a465f0198469cf7ce9c42d6256e1f8587e7bf13c33d7be27a7c188fba25a0e5d354fb3c0f676f53d52aa25ae9ff41da4c097cbc59844bb6dd4c6dbf79e80e0334ffc245aa6127e46e765dfe8db05bd5eec0189513ec3670b3c0efafff55fff3f624e2784");}elseif($o==="adminers.js"){header("Content-Type: text/javascript; charset=utf-8");echo fun_adm_lzw_decompress("78daa5586d6f1cd515feee5f31de58be33dd61bcb6e3c4ec7a5c85b486424831a6ea0ba0d5dd99bbbbe3cccc9ddcb9e3b5bbac643e0041029caa14223512a54d0a1fc0892aa8db20c28f21bb6bfe45cfbdf3be5e3b962ad9ded973cf3defe739673cb383996251bfdd347dd253ae3086f754ad2129af23cf256d8ede34d1d2a5956017e564da09bbb407276dec86a42184d080f838702628e14dd7f1dbb44075c2287029b613d29cda8e7c8b3bd457b5be4dadc8233e375ad4de332c1787e175ec11f314bac148e0628ba80b8a4fb7c3051d29db21d24026ba00a672b8a170dc7209d20c82ad6eaecad6fa4e5b9d5379d70935a3e7d8bcab6a6b97576b5abf4cbcbcbaaa350603ad21d9d1056c7bcd007708a8315ce2777877bd363f9f9e741d9b140e84b0d241977bee093192a855d1bcdf0a8346627e7a493144ac3ccac475463cba43203d8399d89cc0b068e4f3a2ca99099538802cd82a5a73fc208270ec05c4acb422cea95f51a86fb98e75c3ac609730aebe8146fbdf8dfef2f0a7f70eeaa85a928f39672ae20e17c1aca237905651e437b392dda9283bd88d80523dfb7245595857a67afb347b65e6cd8aa83d28acdc823b8fc7f71e01e5f8c1d7c383fb991d5b9bd7fe6f5d829d9136236137d337bc7534fae461a626fdbab07e52853055955423b11a8832e893c5385b6897b8706e4684ed25945c54b1ab388b486340a08fa65d10264c5c887b4ed473a147f248a4c6b729e584214db285c425167fdd178d58b199b34358e54de14517fb1da2e62e032a64ce25df63cf0b313ce9bdd6678447cc570a5ca2c4e555999869dd2b9044e42b34d37e4d8a0c684876ebac3cd6fa3117e2649723689c8cddb6af8a0ca73aaa92cfe0f41ab5a01baed11e61577108fea5b61880405193399d2ecfbcb05c1a926608816e6196381b38f26c9aa760560a93669c8b042202c7878897932cb826129cf315729b836e9257437a14462dcfe1a758510e1a76812f47be1866aee4478df4c412f16a516613f68c180dcf4890443aaac17498ce16c74b4717835d25a4ae632b173636566b176bc09f3a36698b8e16cf92760ead726e9da274106324b484dd92d341892b3c2fe942ac449d019b4086b29da21d405a7c2e7b63aad0b46d5ab2650030d4f88ee479ea35490a0b57e78c0ee12f6efdfabab4a51931b78a44df881a90424497cf27255f8d0d87c992582828e20128b97ea8fcf419e80cbe83fbcd90c326e0dbd4539797347d02aa928098c86ea1b880cfe1801c73b6115338d30a650db72d9a0fc812d340837c098b124451d1e8abbf1ffff0d193ef7f187ffca5b20964c75750155029040bab48816134faf070f8e8cfe3c3cfc7b7df1d1edd1fbe73a42b4f1edd1b7dfbf6e6e6f8f1bdbab27ce9d9958bcb8b8bba323cbc33fefe4f75a5d7eb4166a39030185b1e924d9fba2da149dad40418bda10610f750dfd1fa3d0742d483116d61c1677401bf4c795a4d6013c2497ce1dc6f5efdd555ea05d407c05577b446027a49e3ce94544581d525d0b3b4b5ad47429c2eb22d3edb9ebda28bc4843aa73700d7653eb2954ae285d627bb0e8fb784f440e2c89c101857121afd637ff4d9fde187ef8d1f7df1e43f5f1b86818ad525b5cad28a02393816e793009b8550cf5be085236be879e2132683d014143813a68a62828fa4ae62bbb35a6212fca449099a812b8c1870617e3efe9c35c575e9a3583d1de66596df7a38bafb3e8cddf1fbb74677bfd295e30747e3cf0f8f0fef8dee3c18defee7f8a387c3bb5f0e0f3f18ddba3dfaeb37c0f8730971464043aea6e1ec4b3feba04ce455075d613dd6ac23195f548fc33c28b400d6faf1ba044f8d2cf58c8840ab3201a2760659791b5ed8494b1bad8501f69590ef893dc2a22e65f50e23c4afac0f8ffe35feee00ac1fddddcffc9a55d65a4cac30e38f3f139e7cfaef9f3efda6ae94e26d630ef15e5b1092d763809b2ca86cac66602b8be01a581c677eba1ba7d5a8acce28504f698093d0b4884eaff776e4bae7932438cf1255c62d8034adffe3fe3efcc0a309bf6fbdb5bcd488290282e700ed19c0e495e7aefee2971bcfbff0e24b2f5f7f65f3d5add77efbbbdfff01b72c9bb4bbcef60dcf0f58c87bbb7b7f5c5abeb872e9f22a2ac8f0f0ee2b147610292a59c20bc741cf3651cadfa64c75cc5ac35903be8653ada6e6c53fc05b4d0589bf57b8fa32e65da3ed52b8281f13cfb49fc56a613389af0e66e2cf24302069b2000470666d547e832b2c2285392a4b1326680b36dcc2561b2f86caba22d629cc08ce579693924bcbcb14d9176ab5d5dac6c653c427d870daabe760a200526fa1e9b43e5c82f14f0c01619252aae2e2eea626409a7e4fa1545826f6bedc90f2e22c1df230eb387eba745c4ab692c9851138fb25d6ba5c60925d1cac6b82e6a8f334a125b3335cd9123129ced4c4e8fcfde34ca3cbeffbe7b47e69e5d973db1fff03e12c0f5e902f4c9020bc8d770bebcd4d39e19bf2120c912dce1cbfa3cee6a912afce12e4a03b92ed453caa5a71d4c0ab51c8658e936740ba10a671485e83524bf63cccb1492432aa30ada6f0559116bf5c08563881e6411436fd7ea1700a9641710e741f504b474f1e7f71fcf8bfa3bf1d0c0fee0c3ff8241bb983ff01ac214dba");}elseif($o==="wap_page_bg.png"){header("Content-Type: image/x-png");echo fun_adm_lzw_decompress("78da9d9565501b5e978771095e5c8b3bc50ba1b8157777874271d762c51d0a8440f020814091e25eacb805282ea54871283414d8fffb717776f79ddd3373ef99fbccf39b399fee49d4d17a4b00a001a0a0a010a8aa28eafdd3c7fe7570d0feb9992580e3ff346a3f25133f7d4f27bf405b1f471439074f3b474655775b67473d475b8760ef71474914142a7f55453983a0efa7454701ebaf5f286f0450accd640dfba415763fbfe1020b43b88ee78dad0f53ea557a22756e898a28c01851f2a7d53f2e7e9fae0ded5cec0e27ff9c297efef3b3f8a574d83df2a4e164c2d83adc70abefcf01f87933e2e91f826c7b8528121313db8a7870b7ace97bee78f4f27d7cdc4b97b1ea8b787c7a7c40b642ea93672052b0cc13b5f01aeff666f8a2f931c0b3ee4494377d390fd9e651dd976251fc4fbafeec4eedb19ef6f8b2e04ff39ab6d4edc379dfb28e68e5bf0c9ee98c8ea5be5b83c77a6a44e8c917a2b6e23c7e6bc470679f322c5828c8b281a71bfe0ab1668a77b7fc09d9dabb1ce38fae0ed3b60cbe3d369cfaf20ad1275ab20c0ab0f4169aecee4577ef5ddcc3c4c0aefbb3dc15e43fb070d7e458a7e2b2d8105653756cbabde71364dff3f114656c30a963a9cac898d406d27a8cacc91d8af1a7bf40cb40e2d1a0f03c35514ec0e4ea68287fd5989fc487c449c14e6ea1c8e9169317f7037ec11904f652bbc4fc30eac549aa2f4e079028ab34fcc848e30d0b46f8c97ba06fbdb5a99514ce13794938057128872776989deb2360aab15cabdcea1b3c069098678322ce912970edfc52663b35e18ca11970513e822aea76b04d476ab3749bc9705c654699ecdf4f5375a0c34276d928bbc9cc9d0c4d192f5b3182077d08efc71da939efc6dbbee6570fa8d4d0abb01dec4ee397cd7a30fd85a64a8ce7a4a36ef7030efa78d9b669ccef44e06fbe812f25c86c322959110a2415c0f464340d90dabaddfd8d1e8524b51f5c892454d9be4f19c1d8f61d8cfe60dbb94b9afc234e912c4eb322ef75bfc0ef4fa7b634b73b4941ec62dc6328aa230dc5c7cce0a287961d9130d4f4133e25e346dbcfb903031c4023421c2d01d480da5ceb98fe0a7ab5bf195583811d263c1fb73b0e25a398a2c7fc076e374c514383ae0f08aad147d13664596c8c031504755024353e0ff20463eb456aee72047ce4d97e65ce7c9e79da61db4d9f53db5313b8b426e75289abc2cb4fb2be4b80afbc7a7aefdf3312eb395078cc9f3f2a6ed377434032e1c216f8a55e19ee2d8bc99891ff8d157323ae48804db97a8ef53575960f8b6359e30fa77e9c6f00917633402f92507f5f0b9327505ede229e10247ced10428c2b80ad93c0ee92be844a7760c4f232e2e98fb34e5229393c83ff397af8fdd0d6cac6a865dd281e6cfbef155105b9cbab65ff11494c30c6ac0dbe7c545bff0571988fcf4a2d8082a8e97d7512f9b74a14ce8c4fb0c4dd5f196498ed9574adcc7f0af739cc64ebfaa36c498b17f156e368404b5101f868d95a9604f763448c446329de91554de693c48359a46eb61f40552edc85abde79232d510238b5261f9e2ef7bea264dae9ee04dcefc4bffc5bf58420c65c0d493501d56d7eba57fd88ae879e562b3d4dd45b1d4140224ec89a062052cf23b9c28919f2b42974b15f078561ce0abc4414ab3926bd13c022ff44a09ecf0d9125538a9457e46388489cfe295f0232789b8f526e4ba53ad354b6c8eb6809e0e2ab0dc154c47bcfa4656429afe018c6c2b931a0c8ef45c629b7461b1e999c42e45a9b2a20a4be5db9e9757f54552cdd6c360caa1d7a584b0f637b69fbe30afd3e95132d47aca021761831383e80cf46df18d0d64e6d1fdbe652d8e9a4432aa1ae66a8c534eb46b4c270ca52f1426c8230588d256f60875907e832d55babd4fea30093abcf042f23d64cd6aebf3a76de8194e87eb0b3bfd96029b888f657dad88a2cc2a0b451395b90632019bf048a946d52a5ce371a6cca90e7fd44db96e48cc24647f5aeec557a49d4c0bd384e2dfd4f04d45ad6a38161a428c1f7ad6f15884705caa4dfccfd375bc1055199a7b848469b23cd4ccddb111b141e359b49af41c59a21a8a09efcfb622e448f0ec771b6679350f570514761b87de825d32466819b363dc93ee906794e37a1e41e5e7356670b279364e9b7b1323262e5c5413c41e185dd0579bb2833dd326915e6b357278f97a32f37826e2ac882cd94b701f722a90d4aa0131added76cd89be0314069ea26c7913e834593ca68c9fc591a60e0607fbe74e7adc33fea4a6a50dc63cd8f93a06ad71ebe264144e96ae68f11b8a62754715ebc86c5bcac5aea582d17d5f3c3bcd1fd21d8fb24d12237e3403a902587339bade41809b79a6e908fb57a86e47864e200f19a7e97b6618320392e0e762ab39e451192a80cf91402796a843d95250acb50d06d332dc8c31510b5ba0f3c64709a2ee6b5f31add6d35079c6f3de669c0c6b680f1ef3f37ead7d76f3b3804be4aee3d373bb06402e1ab9a524d4c4be485af6e34eedef00de5817c91a1f7355c9965b4416264e656f71c6ac6cfbd195cc473b4b9ab0c0ee7058c4b2aa50983122fb1d092528ef6bbe6806f661595e412a0834e3fd9c27bd335acd3e767d796f7b6fe22c043cb4fa6ba4ec252cbc0f992a4dc56162b97bbac978b77ad98e1d5d235ef66d7d01b1b0271c2f1c6cb8496dbca498ea1a03d632fed250a788106a666621c0fe422d58850633d198a068414fc74cbdd65d3f1cb3a10b2ecdce491d6f31e9c3c04665c4fc2a3c33884afc24ab549f80e7a9bf665f7bc560644ccbabcb86cbe571c3a480dbf7848469913e9ad0e6317dd7804406476016ba112bca640fc05e49b82657f7f11419ea6d30266c0dc5295a53703203dca74814087259e82dc9aed00988b5c5f4b5da1e83981fbcb9473d8f4c7cdf30e846ea08adf8b3a71c9b352ffdde4985fce688ab8187e87d654491fb21f74b2e141d6c28286a774f991fe477d0b1fa933e7d65d1a4bd9559bbbd8389c89c0adbf0c5988b996bf389cd42d2643635073e55aa3c67842efefc8282c87bfaed8c757abb601fd05ffde220ab779b0180cdd7aba50866402b9365f7d32b9cef62a50235b176bc25bad4e5f291e8f828eec66da9dc7c34ca5278de6e3e27e1b359cb46df6dc0d26e778c4ba2a0b2d7ec2df921e32ea33d443a1318bd9d84fc9a7b586e961f580f875fab4ea2947a103fe5bb48c2bf81a395842d9459f22c5b3703cf37130dff34ffd4f1f1d4e4d079313dee9fafb65958aa629149da3826dabe5b0e2a4ae3b1442716011c6059793486959d0df00a590c561b171bea2dee1328eb9009b547fbeff17b0105f84e5f54e26609f6b9c04f9cf479393b18bd877353b67a32482b66d07096d732cfb1ec0ec977b5f6f8c344610be8254e65beafd8d8d7136e937ae3de53d162977b5f6108f2da0acf825e98cd37ec64ec8e8857d4943d881665bfe37598acaaf822e8c5e8b167deef992e6d1127a782059fa4dc67899b1ab85d56387c3be2968c3a6dfe8c89a6d4a037adf13026004d615f624315dc0972f0c828d7727086c537f796539d8e65f2b9bf9f265e62ac04103948930b1dc57dfd2ac747faf92b3a16472e0639770f90f67c3e0e6eb07cd33b88634b0afbac9750593ec672e2f740b39a6f4b2e0fdc1331899476196ebe2918b532718f13ade5a0d164b75fe8abe4687c4d64b0a0e240b71a43327e41643c3a26a93e491dbbf399e8194dfa5201e8e3fad1760547d133172e5ecb65d84091105ede3e7406b4b0b4147dd9b91855f01321eb1926dd927866f75905c88eb542493fe190d4e3f2b19b26696ed24935e478754e234c277a3beb691158836dcdec347d7cfe8eb3a2b3c63d5372d2c6ac870f124f8cb42d8c96a3a0b968d5ce0fa52667ce0ce2661bffec008ddf72c648fd73f178b735d3a64a0d3e662abfda58901a43098487e6d64d2c709896d822de2ed3b10bbb51e8de57b0a6a9252241ed7606d1d384561c3c9a61422ccb0e52f1833f5cc2689988a02234de3606a60c11cfe689e571d85e29e5596be33d067462a0743df54be1d5244419146ce3a056f81c82d8f5ae755d2aebf6446bffbae5875bfbfec023f83e5d6b24c480a85498f29d46db0850a420b181bb964e48231b8f6db8d9bd9554c9ff577c9484ff5afea6a8a78e070d28dbc4a362564d77f8b3168d938839c3c1381aaee99e48c04cd693a86367a70bf2dd379d034a2677299cc0536231deaf9c2529aa8af4b1275e1ba41e35843f5252ac2baed901929f1a672a60d71b26b697587fb78d5fbe64fd7be4151e2ee5d6d810e0425381c64c107ac3275bc3951d1544ad5f10c1c567843bde4429d467b022464e3d1f20e7b8da051d73e2435a30191d5b8c1857533633dcd30ac799d3a09733efc6551ac83bff727d6d8d8fa65557c098e430f739ced0495423474e969857ecd8b84f523dbaa746752c50aa4dcc04b0e954abad67eb01915f2fe33af29fe4adae33bff4d4f7d0e0bcea5eed5bf193d8fd744e1dd2e8e15cb1bba8cd8e5e3b2f402ac2b4e0a941ac278d1c91c4c859aa44e5e9ca9c83eb843ffc3e65e44abb4ac77fbd48807e7ed32f27148d35c96a44690be1a6c83d98dbea1a57ef0a9223e32f7b9f4f9ed59ab46f72c5b71a70ec0e526dfca3bae9edcad1cf0c08a477bd12b0cfc7dda6466b72f5e966f6659b1e92b94998de69b06af63b90e65bfdc8223d13c991c06f86fe986687d358733836be46becfe8f253e0c99eb0dcc297f0dad13f43ba8e6e9be19167089a47bd95b57a97a56884ae61cf46ade7c3bf417a6163173b5d606544e7c67e371ed101d555f5150f47c42ee1324fe00489e97c4dc933f84c4fb19fd12e46f22143341642beaf459344787a9462b83167d9c4b55eebde0524c9bc450614ca21452587c6b3b1f24aa447435b238484189bdfe38f6537c4a8277795e295a76614e7d73de27f9cd32a2a6ef7aa1336ae329051cf6374a9f860182c4680c923f169ce467643ffbdc99e5f01f70f378c77be45c9ce4ae6ae6e74f0ebfcba43b64737684c66a65b66f8932c336c94d5a07e7fef844e112b3d75041bc721a816604151937d37d193d5987de96c10b58e87aede6c96b762595a0a83c1d4d92afd28dc00f11305846f678c4d884f0ac76987e2e6d36c76b475be63202d14b239e07dede519bc09ee34c5bb5bdc48ffd367d24fc4bddaa261dffc66f4992e9148e491c10615906cb020c777dff855445d0bfd7eac0a8fe477a453931d452e9e67346fa7e737fb200e9ae1a10222939ba8d6945931c7d4e073a857fa7b401baa5fdceb4385e58fa5a993a17c8c6ff485e6cbeca52ead5862321e1ca2da03e367a71fb434026226afaf06412f8497f3efe00440799e7ecbe5b8afd783ea797370381ce2541f3b27df9ed576ba380066b250f75efb4d9892e182895f35ce61e25797261d7431807922af1fec60e81b74ace4daa48efbd60fc8278158a89113f5b9554b5d05229df96d85a7f894c7ace219a0de3a0da22a2fb7ec5dde62259fb613ef6aa936c15b5d5ad9f427f5acf0d38420129c8a7a3c7626967fee12090d5f1f29eab84d53c9a2d9dfa055d79e946e93436e4ed8e6e6709c976065fc3aa99015d61e0c38d989da19a31809c9948f395d05fdae98bcb92347f71db14cddd5277b5131095131a45d5d2772e87e5d8523336508bdb88b77ece4e424712df76cccdd1df7068804d6bd956846607dcf0ceb36762f791c1b1d0adc0a5f3e65554e58178304a4556c29059f574f3f532e054f1b6ca652f4ddf52ef3d89d9e3406202657c24d698b67522cc122a750949de954af3f9d115c6f729daf8631e209e2ad23fe54e241099a3285451d2ca60177561fecf69b571e8ae1f9f853fb9fe410826383c6a6ba2994d458422a9217dfaff6a30d75bac89322ea407a1004bbe646dcd3a5fb617666a306e68f2ad738f69eef770eb9f796e851b805fc67121f646849b488b19641b345b8e134c5a689f2278c2e50536d84a650a105ab401c0d991c7d5ce80f50f9d9af1b46e7b19cef31ba3b5e38030e6caef5eb1af5ab2d5268bbb3b08256d295762a0195850a4c4c51b2d71d9a93322f65caca8ac2bce3b4e83c37bb8f7aa3585acce438c0ece836c0d8339c19efc9e4776ac47547d60a0658443f5db97fb9be48b291ba1aa1afe0d0482b7ac54c0401a550f5bb731f813b2fa084cef22121cbf3a155b4fa4ab3d7070f181f8fbf4c3f522c428454cba83fb1eae7d84ed44fbdbb9e8cf0c53ac7dec782cdb3b8c0abbd6dde59f368e75761cf275f6d1e2f82966a3edc98fbb00b6a5eccef061743a38c722f314413d175a7ae2ae49f43b190c14fd9b6e6dc1416cbd2329d1d7b5c5774f0bde1f4dbe1dc262c802bc8f9d0b5eae74bb65d7439748dfd60d9d0f4d557134c373904ea8e139d750ebfece39eed18347d371b03a054ddc2087d9cec19bb30d2d9f15d8fc3ce96744f724894d1d12bbd81ace0fb6cefb059f47c29cdd29c2e87a4aa3a7122bb95e97de55e3cf09178ed8453cd8c9171a690b265d8ce2efc8fe410a844e2e2bbad3f547ef64d6a2c82249bdce95a9c69817ac493be27e0d9b57861b839a55d5c5b13bd6e709abf27c8b97ab5e0db8bc365d039257f74bdd66b033d9adafc5ef2cd3468f130d78d8d1c0cefead3d56695088bcae4b86b161f9d3a98e7543958217ea898836e9314090c998713cec33143bc9766fbebf610684b67312c2b98d78b956f09cf377bc07536211012c7ace1ed9fa50cb7ef01506718b98df9a4fddff6a8d600859754d6dda259ae27af8e6b3bc21a73a75a15cf07978f1a25224ce952f951bf515275f98ce27c25fbfac28edb01cd3b0380ceeb5ba0b2a14426bdcd09595d9c983c22cd392b4c7c571df55bd22864f07573362006cccd19bfa7e5d82d77f3a2e7f75104ad96e09f77f2594632466df57d419a18451a6fdccdfb808fe66ff4a9d873594fae0c5e080700b33dba4ac6f662cc01f7c2243334af9b597ced11028e606f2d3d8a8faec2dacd099b31333c93c2d2cc60637bf0907a1bdd9164cd23ad9146e88a687c5a57c587a27abd1920ade0d974c3a1f234096647c260da1c6da919974c2a7179608e6ba59ba4d1419cf9be493bb83e32ef6318558c6a89a7c5ccb1f2d90d94068df620aa63a56e4bfbcdba10aa5d7df622bb71a993fdbacdc58beaa38da9639e5f30548429c9b11e5779b1c44a80259e3d81e619556c321e725c62e19f2ff97745f16036e4670a05cf6c7b6ee578ae41ec4f7198a5445dc0461ac93cd1f808089ab451666ff9256c667afe8774800785ccb6b901f12d9740bf80aa425d537a02360a375458c9865f0261859f5a5af0ae9839d2030a55865d6d4eb280e209055c36d0002e196737dec97430e342bef0bd8ad659c499f5436db160654d26aa1fe9d7297882a847c7451599baf8277fbd84a51a8218baced31e98ab530f7ca3efbb9cbf04b661e75c69590afa01830210aaca6ef2cfde363745de9e2cbb0ef88472109c344582d18cc128841cda46eecb450447606d3753938a1866d5f826c5ba40dd35cd38567e83e8f6add527c57a121ed4b799b5de58760ef4f96425d4249e032202b462a5f15adfb503a8c8cfd97cfc9d1fe522c7acfa691e502866c3cd7268ab5dfd8f58639480d23a76a741cfb7d3a15e4dc8cf2a26e105eef9529b73c0bc80208f7dea2b15a94530cb96c38ec9038fb8a0acc6dd1c8f4447def7df68a48cfd9fa656639796a42a658e28273ba99413165962551d3135c97725d5be459b50a5d8a07d4b494aea06bec97504c2314f9be8ee36c1fea116c7c018b596cebc254ee535f9373b38d4da061899e3434752cb13f997782f5646daa77713ed7c5db5c00ae19958aace7204777890789d17e6677415965e07bb98ceec78db56c2a5c53e51b7fafba8befb8cc94b50611bc3fd957deac2fa52d84fe2f9dfde6e43bc82e72c2270a95b89d186a8182bc1d4539fbcc610d3909e8e8e1db9e09fec126b4014718b0f9dcac291a38cef187f208e6363dac6596feadb3f4a24dd08777c50e67ed9c3f8e0e09de366de21f5db163c69ee342376f3bd00d27536d5cbe94bfdb7da542d1532249b3a02291c30ff92bbc7c0bd1a5625a5640bb2c3d5f169d31bf9c393fc23b5dfab40245789ecacf3ed9d885aa20870b4f46177d4d5d239b6cc1772399329dc9430083c563fedb94e4a148c098cee7116393423db2f945e4d6554afa9b2f688917a8f9554c2ad3ed2502a28fbd1420c4fad74a8834037cd6bb4f4fb07a7be165c1fa031768d5ce79914cfd77e41339eeb0028308c0a63ee79ce160c80652ca62cf11afa8f67b87c25ec438ad3243cb8bc5e9ccbceedcad3ba9b3fb292d850af0a3df2e32f3aab5ce8f1ebfcf7f029f4ff15fb4f50aff2df9b12b98dffada12e13f05fa0a517f4ff3fcabfe0cfdd7f5ec24a81d0c369b20d50d91b7d3fe7a4338db922aeff1516c157fe8df13fc3168e9eff8b8ebf0cdafd6031b41f9189521682f24fa92a6929c2e56da2ff03bd7a5087");}else{header("Content-Type: image/gif");switch($o){case"plus.gif":echo fun_adm_lzw_decompress("78da73f774b3b04c146210626864307cf7ee1d0343c3cc9933191818147fb23032303032e800d90c20794626c596fe95a7dff2fb727c3ca3a5b92fffd77a4d058ec2a9920b533bb6be533ef2c9e7342b833500870e19b7");break;case"cross.gif":echo fun_adm_lzw_decompress("78da73f774b3b04c146210626864307cf7ee1d0343c3cc9933191818147fb23032303032e800d90c20794626e596fe95a7dff22b73255e73cbafab3cacd7185f9e38e5a1e1f38d5eefb8dd0ff95c378b6560b00600b42219e1");break;case"up.gif":echo fun_adm_lzw_decompress("78da73f774b3b04c146210626864307cf7ee1d0343c3cc9933191818147fb23032303032e800d90c207946268596fe95a7dff2fb7204fa71bdaf15fe322f51d4a24bb07256e2d16deb188e7f921167b00600524417c6");break;case"down.gif":echo fun_adm_lzw_decompress("78da73f774b3b04c146210626864307cf7ee1d0343c3cc9933191818147fb23032303032e800d90c207946268596fe95a7dff2fb727c3ca3a5b92f3afc5fcca2e33e6a37e7c81edb3695e1f8271971066b007727197e");break;case"arrow.gif":echo fun_adm_lzw_decompress("78da73f774b3b04ce460e062686060686868f8ffffbfe24f1646060646061d062000c93030f1b334654edbd83d6f8ae0aacb9beeed6660b00600a147102e");break;default:echo'default';break;}}exit();}$b=new Cls_Adm_Qadmin();$_SERVER['SQL']=array();$_SERVER['DB_LIST']=array();foreach($_GET AS$y=>$W){if(is_string($W)&&strlen(trim($W))===0){$_GET[$y]='';}}$Yc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Yc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$ij=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($ij){$$X=$ij;}}}$pa=isset($_GET['qadmin_close'])?$_GET['qadmin_close']:'';if(fun_adm_is_ajax()&&$pa){$pa!=='true'&&$pa='false';fun_adm_set_session('sidebar',strtolower($pa));exit(json_encode(array('re'=>'ok')));}$Be=fun_adm_get_session('lang');if($Be){$this->conf_lang=$Be;}if(!in_array(strtolower($this->conf_lang),array('zh','zw','ja','de','en'))){$this->conf_lang=fun_adm_getdef_lang();}$ca=$this->conf_lang;define('ADM_LANG',$ca);function fun_adm_get_translations($ma){switch($ma){case"en":$rb="78da85575973db3610fe2b78f14c3b4dd9233dd2bc7414db4a3c756cc796d3e90b66207245714c020c0ec9ca837f7bbf05208a3a3a7db045ece258ecf1ed87474756ab8ee49d726e6d6c25af49d77e29a9ebfd46de846e4ed6c90be549285d09df60ee83b78dae9d7cd7686531893c563ec9f7643af2105c37ce3b79a557aa6d2a71fe703f15de3c912ec403f11e4b120b633ba16ad5e8425e9bda042f5c284b726e11da286ab47c2897d4a96123178785fcdcd05aced4bc25796eba8eb4c76f1b3a2d679b9ee4247823ae746929aa2e68a142eb05f608e460bbf2818dabe819c349ebc98a268fa6c652536bf1441bcc34c19684836c4d5edede888bcbebcbd9257f3dde5d4cf01517cb4955f175b60be5cc3675cd4e63854f0376a09a2b47f912f28e6ca734ec136da39fe4e5736f2c0e09be0f9ecde8941fd6c87bb8a7d1b0ef7285152edd3d0645c57f22c7ecce36aba6a59aaf497685632fab06ceb1c4e10b08b5bceae2410f9fae4509df21a472329b4dce3f882f816c434e284b421b0e47cf53a92ae4a5b5869d14e76ce459257e10fcdf9af54bfa71f213ab04bc5806ac11b77fbd124925d4624125eff3f29f73dc6e92bc315bcb1cb2663bbbe0f3be1cae2f5eb2940d1fcbe1d038402a768d4f164ee11a11fad6a86afc9d6e5c358e9d8af3a7d674c225f7fd4df3f42516bce02c6f42cf9ce0451a540667b3c3a2b490f741c7d9c834d30ba305b1f7e4c312ae30badda4b1931f30dbc09be72da91428a1da565e79eac452393127d2a2a296a257f6c5a1afd4203e733b45a361efd68d3ea64991d265b4a7357dcf530ee48ab3f984bc8ce90379aa159f0a2fe5541aa40511469088c854599ab655be31a861b54202d3c2925bca0b1c0da4b1be619d986f76033792c79d3ea77acd850a7356746067548958f3a9fec5376d2c846fe50defc0f5a7e9d9cb8a5c09e00166c192cec0a0a11c8fbd72acb2c4069d540dbe39560d6626b755db62ce9edb8d39eab9c2471b434ad5891afa9f99e34a1aa1d9897b9ed40e469fd40eb74dd0981a428447942c07c0892e389f62c528efe0b77853e111a5572c43adc539735e9e80978b84671f6cc5bb5b5a60852e51d5719bb83417da748cb96969cecda5d2750a7fda2b768c1397dc170f9ed9170f97ce810332036fd090bec2a815b7a2ac88df29d8f13382f589ed0fe4833507f283b2a355ec73e9a834402b03945f02c2b1144872ab19397b200617518f8a63ec3aceadc19223cd60cb7196ed5bb308ba8ce59d86bd350851b043760ffa3cde4db8466c82aa19137cb03a2606ba15401c513e61e3b16a978547aa839a7379c2d68a61cc98710a10f7c487b8177126c31e7fe73e7f6a9f43cd0e5a0f35878764bab03d270f67ccba627ec84777f2c87df170debe78382c8757beb70a5bded30aec8c1b6c0c931bf593a786c125b6d9acdb83e2ac06f148eb5a14261a9ad1713710066fbc6ae55f9816057b4d6c876959b507f2038a9d7bdb7e57b64df9c438a1128f6366d099aa596cb03237e22dace0d8c7d9f4fb3702a1360cfa45e62aa336d9656ab3a52fa393079d7cd4b1afe12887365cfa0c520c311fe3d9c84065cb251c989a9de3aecbdb15929878c1fb823f22c71b99ec978d4bf780ebb8165a05bf5d838c708be25fccb40939e57a6960048a19241607b6d12d60b54c0cd0240145910c4eeeae4045ca10396f2288a34b798b824cb13fd271433c252f4ddf9c54ec1388b1c6f4781f303016d93509b539119295a6270dc48a1ce17ce008a99167121b09edd41203d7dae51b27577c1c436f7c05dc00a93975e08832844ede6603e444ab76f3957b01954f0850af1a9451f602c2b78a7135dc9076ad98c530abdf0cd0e2520571bdbbf81ca902a23ff1a26e56ec56ae4bcc9013446b630248b3a53fe559f17a21dc287f12d344f232312c708fe7a60b1df33db3c65522b974305b202fcedcbb42be923ffef4f3eb5f7efdedf7377f480314c04b0bdc30b23bf90f0e8a3ed70655b9a5fce99c2ac206e757f4782153ea461a163b6a69344a3fa4c46431a7dca04dfc31b1a6d6dbfc34cb41883976a511838502eae637dac6b1ff5147f38da797fcebb68c2cbf2d2d7e18dfe29083c4c5b2f7324b31097dfaadcc5a0fefbe6d7c762ceb64368207a30d3a6cfd164e8413ac09f552dc7db80363f0a459c3147ef4f48a37c03d6a0441b9b7510b3aeee263097083bf45acfa61038e4f91c8bc4351959e7b1a5e53729a3b1e2ab1ae2dd529b395deac99f380312170f1312267d84c24a22a27a94b4e43dba680e17da8b4744c9a0f19a346ae0fb25159f0f85f7e76d807";break;case"de":$rb="78da8d58cd72e3b8117e155c5c3553192b3f9b6c36b9a4e4b19c71ecf5782d8db76a0ea882c4168512092a0038b6759853de632f7e863df9a617dbaf019084244f6a0fb6c0460368f6cfd71f7846a6f55bb2f25639f7d0582faf77cfa6245911849fd5aa2223cf956f6bd19a427c26ed25fe2d5664d6e43d26cfb4d93d5b79437efb40762dff4d4d4dde6a92d7dab1c2fbe9dd8598356b32d8a2dcbd545e972371a6b15a149ac44563ebb652b650d016640db55ea8b95bacf4028b46723cafa92ab01693cba62a2d9f3f92d74da98d9cc2945aa51f6130e3457788bcd7f420676a4e5545f2aaa96b325e5939dda8ca939c3d6de4b8f5cde9a5595be23979dfd812ea781118b724e72b2af10a530f0f3879690abda5fe57c05305ec9517585dc0de6af7e21c55f293751b0b7be5678da78f37e27c723d994d78f4e9f67c8cd1ee7fafae142b6db6ed72f7c287ceac2e4b0421fdeecd9db3afe6caac5d7cfd73d5925da9a587deb5366b3979dc20989a2c9427b6a4b9d14eb2a7951f16cbbba6f5da0415d225541c75ee4a67c4ffa5ddfdbafb85e41dc1bd24a764bfc0b03352768e84e0244869840821e661f9653d5830fde9fa94ddaf4cd1c8f16c367eff41fc17166b38515912a6f1c2b51b5e40c5485e10d2ce0a6d049c2478f178beb40a597952883f0afe1fcc72ca6fbff60fbb67582093a650ad2b09de5a59ff4ee40bc41cd9d92c97c8acafff5f396c98a9cb2b8249dd7b882f0d3c8e3062223331cfd17cdf111b9ae9996f2a22275d1876deef0d81b2d926a9163a7370e66cd865c20b688cd5bc24a408a73b36be6f6a9162f733cd5d18455571e2d2aef488aac54608c862d5e0dd0ec5a1c43ab11a4c3dc3630a9c32e144236f5a3bc8b64831c83e60a3c63e01677ee5e435728c74c1cbf5b93444eaa1b5058992aaa09a0edd9f8a25984f9db8348960059f963e468e4497daa32ec93b4de397a8467f28cfb63f5810b33c937750d03d0f7570a36a0a79dce1d07413f0d39e4e0c008c71a9aa94d78de967e093b56f55a55d2ae0681f46b70a5166dd18eab61e24f951bd10714649f58095bd1044f478ca1018d150bc89c0ff36ec82280d60032cf621764566490f22473e3c9c69eb3919655e9b1afc78387318d930d53979900c6e1eb74bdba24a3b4c4bfbfc2e18f83d4b8ec0e010ba0fddf0fa7cf65edfd8a077c94f2d7e4f63db451f71214c46d4419dcbbc1665155b71b4d13f6d8443a2bf130875dd3a87b5dc1000517b3b308a85f0f7551d5a7311bab1a5253f6fb9d6bb8dfb3307fd23f343aff329c5bbf696522bef5cdc928f7d9149070fe6c2de2bef2dc124813e86f68112d95221be709b0fda433e84c72e61baf67674c4c14466d1e192de807ee268f3e170f00530a909e6e57f08ff6e14309e0bb383f64866124aeea7df60dcbe3cb3ed60416fda456bd65cf5bd69b7b6817f00c23d53e934065b7b9dccfc8d85c18120c16a27ee762f8b75cf8b1cfa3f9ab779059ff72706c30e17f46fd24d74f675cf832d6cc3d13983304362c87a14c638db2211a823b0df93e760bfbf603822c9fb63d2f37014f3e30dfbb8cf8a811a1d1e7f30919d7fb8a43720051e9b57aa05aaca9f355644dc035285503a8679b4d8cd26728e24a4412a93a8627e2eafaad03ba0a90d80cfa9dacb71d7c0211da395ac014f19f44dbd2dc51fc4550582ce680264e03e23b66de71aa036b024728480449f6617a73f887553446a8145a33d1a975eb5e734d1f61c7a8382c93598283de08692775790f65515384fc5244b0ed6f7fc62da06da7147b1eb6218d94176d848ce8fb8ad11534d014b9960e35d6b311060864e874a09edd6715e438a3b94dfe2e75a01027ea4954d685ae1d9e09ec4aea68e9b8fb9eb3cec9e577c3319daecbd02cacd4383bbbd1445b368c33da563329d57501bc48e7de3012d0b9cf27634e880e531979b67c4a75fb86e363a2738fd4497a7e24d619bcddb638566e3751dd7068f325defef0e3ddbfb36d9091da8bb58a099602b3834d0e19cf6c63137e5e01c6cf9630efde18677436d22b22197e0b4450b6af43159c8ce33aa7a4a6cead6ee5e0251a00d9c1b44d7147ae0e03d582798dbdb9416816c443f6ae2c2bbcfc657c187d4a357761f2a68a94d68a50298d40144a53068991397b85e620b6ed07cb38ecbf8e638d5e8c79c702eb8ef5ff264f4dd5238f9a1e1cc2e729a7f90f22338e851d7aa026e304af85487c9d502450fb67f369242fee9cf7ff9eeaf7ffbfeef3ffc437e04946938494eb4499d9a4f5f21a04892501ff1f2f70e7c2e667b5f72287b95f3d5913c087e64170f5c1376af12d33c1d689addf362e5125549d654dea60f011df914f1147644288e4b263b4bb5203136510f99f9846d6a469ab3274f5fd3af4bc4c418a6ba89353b66cd1862131752274043f64120fb1e10fa3917541c31cdca59e9f09963101e57d628241137e313f74ffc895a7b71fbe1f67462a3ab9824e05ed67d99116eb81e2071c22b7aa1aab058c6ef29118c8bee5ae739e778eb79c2b080dd2d82955dc87029ed7901974a896b66d94123228c24d72512a43021b1c325945374468fbe8a1f8bc6613176a92ae119ae707954e99e9a7d6e788db70fb2a1c47f03cc49443f";break;case"ja":$rb="78da8d18db521a49f457e6c5b75df792bd641f5d132b5be5ee9ad5646b5fba8ae824a10ac1453055796266bc2048c02462bc8488a22006348b1722281fd3f40cf3e42fece9ee99811906cc83d2d3e7f4e973bf34560eb052c7f2394925105656b1fc192bc7744b5946fada0596d690767889d4b513525a47eafabeba212335bd045f24ba0e475258ce61258695227c24b0a260256a90908f49268eb05cc572112b590628b22da5c82e8aa26635a196f6b0541c1eff6b8421d06358a9e0884c16137a446a36b2585ac7d201969258da0186b0340f144a583ec1f22e960f281df31b58a9204a5b2e312132489bcf92d867b8c1b68b953758d9870f582db2bd34568ee06485315aa134a97c945b3db2a7ad1551eb2049ca9b2492435aec5c5d8823ed7497d4d78c1f2c95496e59dd3a452497d69502bf0a085e31913ec3aac156ff7115a13fff10eedd1fbd3f719fae1e8ddd1b82950b052cbf6e35ae486c0771f561f923e7bafd01571b286a3eae4776981d9998cc2015031716f23152cf242caf60398ec8d225896d217205ec27e1cc12bb0d98dc3039568e181989eb34c72015aeed4e9d9927db2b701ca4160ef58d149c3b63a829a45d14f4ad4540323c0e246b5e6dabd114a70d84df33cc281a7f38ca0c9161bbcb6868626268f881f06f580c7ac559c11314057f2024cc86676602c190383588a8cfc805262555075b1f523d0d4c09df08f47f2bbb62c7925f93f207d865ce75cdfe7f00a7e3a814ca6cd10945e6810d505f278358824d19cb3186ba85e537f4c65b6f33e8a151efb4372404032f6641396b58ce327d1cc119eadfd45bd6a97bf398b46150499d18c08ce9f27960b56d00a61ae07bd9b8f66ff14907ac4d551870f021ada8ebbb583a22a57764bb604ab0e1403ab68399161ce218175bd6a131b3734a52517a5ada564bbb3618961aad6c41cb5d22f2695f2d9d22f53c4a5ed510358004e21d181ea5ef2c685b654a7f39a66fe46c2ab660604b357d62830dccb6a12b0db2b06f8376fa78b781c153ec18aeb73b31ba5dca81c103a20f1f6692713d67db65099d6ab342133044b0b6900755eb3b8be432899a8df7602f9688c146ca47ea44f205a444c4c5b072c82296f71824cfb2c097efd2fb59b2e4e9d155fa76ea84340be9f6a61ee535e7a6be8c8080963f41466ad33712c03afce4203bba64ab5e06e8c283cb5209b29ce01c6129da17bb8749dc6e77336e4fbc7e7721b25a87e40c446c29989e5d85b8a87c71bab2971117f538316ea5e1a60cb3c261a9e0a87154d7d1751adc29889f7796c8606d969c8a585aa5c5483a61e5d9165d0e528cce91e92f663446a4b61aa5958e04d48f3295c9acce9d75cc2cbe705347cd35da845e06ee00bb795f1beca2b9e1a0e80989c234fc0b7a3d3eef4b714a98f38a2f5cceb930825cedd9c5a2cbbdc67983b29e8e933c34336772f37211a9c7afc856062ad30ac0c83568f0c84a153657b4f8b23ba8e9dc6eb87a7a17dac8ce1cc6aa164d187596a3f6da300bd7bac705d780b50a91563183d4680d2c0d29c7c82726f227c644af04d185c42d7f0b929b2fd8914c19edbb9634660fa4d4a1a7d4ae0f6948f4f02177543736dd502d5dbbc02c6e3a7ac91e4cd831dc22c186e1ca9dad63b5f8b2ed1a1cc18ca1a7df387bce76df68d5a88e2da79cae2e6a74a5f4a6dabb66f555fb9b24d3d05ed09c4b5b37c3db6a86b5eb17247ace23c421531baf598db40ef2acc7345ab10a94b068ab101506a6502709de1cba7524c3a1a0cfcab56aac6ee63248f050a9deb3c6ddd23eed42a9b7d336f1981572852eccf66c108d787d905dc2b321e1892878fdc2a38991afef0aa27f3230e5f53f1b4456ed70f4dffd1a145daaaab10ccbde898e3e8fce6139860a462f1b7d999adb86844d43b9d990116b7ebbfa646b2830e613b8826f71f900b0c9231ea9db11501f1a0d7828f7ec57980ec02830e5097910592868672935b38dc6459f38094381d9c85075ad9da0a1b1df84a9c064785af4879c42858261ff2464e17e826bf91a89aff5c36013c15be6c77d5ac0eee09af03cf1c154f3dc332782a144bf109809c144f092cd355679037f60ea34f402591be6e13e0d1e2f95741083f11d8c45f54ff5d09ed67eefac3b8f69dd31da612b0c1f7b26c3e169aa795d3a242b69a88d8b6a864614cc9079ee6fd04996c9f5219a30740838fbb4777769bcaa5c87c8f8b1f4e54c92eec98a4ff59f98acac1042c9565796000ed982446b50cf1adadb02b2cf593029c46fead0eb0fde792a68f9d7b74f584edf06e9492e6f3f764617f2254c4abfa2afd0b7df7d7fe7871f7ffaf9ee2fe0860ae2b304fa2710e636f5078499a0770e82f11998391410c23353b4ee879e7be1931a7f10f1b032ba72fedca19d6f68e79b68dc3347dd9d436eea49a331f185825d6f200611cf8c970d862ca679174599cf9b6638b2bd956885b29ecdf0a4c79f72d8c307ebde93327df68155ab50023da37be2534fd81712e63cbeb0889ad518fcc5db4f38ae4f085fd6a70fcc1a032ab52e9d1e6eea9bb0179184b107636a3c4bea67eae1879672458753f5a40a9ad136e79db2f00f76148644006fb21e1022a5dc498395066818f71c8f4a8c367f41197f386ab42008721144156ad66aea7cd2ec769992ceb5d3f9f653185c62bc9781734300a191b0cfc7ed2bcc4e7afced91ab4b4b50065a0749264defa1c01566a663e7fbd8ff5d16cde2";break;case"zh":$rb="78da75575b731ad911fe2bf3a2a724ca6573d93c3abed4a6ca499c58bba9bc7415b66677a9c24291c05b9527b08c400804b640480649a09504de5820cb5e0933207e4ce69c9979f25fc877a60f33a0dd7dd170fa9c3edda7fbebee4f4ea5237357a25c24d15b779a69f2aa63313825e7f58064f55c9cd548d64e64e350d62ebdda7b82c079736af72fc81e14dc715de42ec919bd70ac06896cd31e5545fd5a8c8e48e46a6eab03dda6ace68cdb0fff71cfb0ad6367a3f0bfd4332f5b943be7a2f4c24ba5714814ab10927cd7f12a29992b8bfca15a3b7b96185549765a6258226fff40beabf242edbaed755822df0614b37965919cb79638d82437fb9dc877c4d1819785a6b5eb768f456a484efe52a6d2e4bc3f12c32ad9e3aeac7cd00b71bce355ba24076572ea5dd9ccd2dffe6adcb97bffeec25df5ebf307776ee117ab90bcb244bea955dcf6295e22f63a70a02eac41b846f864b12b06dbf2f4997b9a26511f88ee2b6ffb5a6e9d20da43911d907bbdad3eb239548f0c3410e6b2d3d9148312c2bc695b97fc507f5b7f749ee4fe9ab75726d9288a7c4b5975863beef50bed8ce367d7379639a1877fbf2f5e8c9006bab5b070ebf667c6bf93e64ad45c35222ba6b1144f18abc9e5e5f84ac25c9c277978e2f68ee09b57d9a3b945e39786faebb60a7a476eb4b110dd82ec553f0e0bbc274a35317a2bb68b7e3e2f5ab2b1c106dda3ffb282dac059b9dfd206ae2e38e3e136ffa2fbd127d184b112ff6695e44e1621b0fb797bd89c59e05ae7348d47fa7afb27c87b18887f9a8f82052b197393bb60569ced8a062bea1b8ba1c81d97e1036f100701f817e9863c3b22dbcac8dd6be75849dd5e8fc4d6ba285d90ec67bcbd631d7f91e9786b8004ece49a107bad0fc095ba5abdb8fe1ef89f15955e22432c9a5b0dc387b4eb137c4fb8662c4eeffbe8e375b049815821c82ff361556e6f01712dd1fb8083fb78354e5dc123621bf8ac8bc240d7122ff4c7bf009514d8e7f2f1cbd5ff1528d53e0e730cd18fc30d829ed33e27bbbf69f7532ab2fe73c9db2b2a883b6dcb373b79645006fa69e8178011eeb8b9c18fbb2965cf66a43744744391dcf335a028ac3a008b4501b42109a11d78ca3d60c6ee8c88ed8422f4178446bc2c709351bfc719af6589cc1592edd4fba25c705e3d67c73896f000a00cce03f8ac82f388a5ddff8e032f3e00c11595814a27b8415f1ec05ab72cbe4c61423734744ad5d0d0404360f9fd75167bb3226e768188fbcdc66b51d8d1bd79fa084ddf1a5ec9cd6d267e3322be22144d1fa1e94dc03a25da9be458db72ff9064af44aa37a1b594b726180f9236c9f26cde6e4875eaa6a5fa607684e84e1e34ce625fbba277f4bb79c7ed9db99d141a4a45d40f26d51178322821e8b306a745da60209a5ed3f4f9f04a3631736528d2353ba9d170733ac97a7ccdb6991bd21ba36eaae5fcf43464fe304957e0af3fa1668ccd88a6e7982f0a06a3dcca61f891181caae6812a452d809060578d052ba75ab5e81ec02e4b81fea2622b22f3d6edb68cb945d28758957baf9a60b9f3b0d26f275662c6cf0c501491b5b8ded0ff306a742aba6bf3742f1a338d27c9d584f1c834a24bc6e70bf77ef1a9612e3d8e2f4697be9ad77353bdc51fc37eb0fa45776de4a536e4e66bb777a24a91e706bc20596ea0a6e1e73b375db1c72d99ee318f5225edb75a1ef1f668ac8a9df57c5611f8853be126d7e5bad7fa1efc20854aa0fbf188f2c9ff1a4fe218fb8b9144042337a5da0f6ae7a0410fcd98f9181c209806a55d45a36e3df8b3b1187f9c7c622e25fc89d5cf802386f3c71dbd411fd76b356bf05e3fe03f36bf16228f62e01d5f479e9a089ab964c4971398f7ff51cc03bd0aa7ecfe19c761427a36b651e237a617b7be0913e2a6f97ae0d52e48cd1894a26e83cc45ff124980ee4462ca8cf145d4fc86140b9d8c010287941534aae12e5a988a9b3c00affa3605a2a2c08dc710bf99f8a90a27994b20606a8cf81b01d0b83419bb13667abea67cc51b65210b3638a90a3f95f8349d56176251c6fc3ca4b9f94fbe349cf64b8d17263dcc4afc6982a41ebf1299b4dbedab9ecfd4e6b82dce4b767f00b6f327fa39fdead7bff9e4b7bffbfd1f3efd2388caa1ea917af8fe2b9ee4042cc58de595e853a0f82be424113792cb40856924be8e62a932354f0c554d17306b1cabed58671a880f234f15a8824d36c0c31e0543b1c48a66f7937b0026c05594bed524df796739d6a1aa14fc7fe1e65599d764f77b9f6e949ea9ff43f00bbaaa3cee985f4692b184f134124b9a884c5e851cc6d487ffddf8214df801ab985b359c8d9c6cbcf9387c35b78a196b700a1e7cf6406286bdad2aae8807c9427ae2a2ffe164fa4a68ed57ace48ef7ec419df5805ba4821fee1ff313e5d345bfbe9e2b164e7a5278f57551ce81505af279c91e159d1180bef5527537b7b026eaef153785939a6eee957d58e53bf6a841f792b11867c7587d1c599a30b99fe6381cfa60fd7f8b5d1ee6";break;case"zw":$rb="78da7557db531b5518ff57f685997654bc6b7dacbd8c8ed5a245677cf9665258db8c21c15c50fb14284b024948e4124c8909a4b4042a099702db6443ff18f79cb3fbc4bfe0772ebb4956fbb2bbe73be77cf7cb6f8979e254ea40da0bac6181bb7e4e3acf81ed7548da02ba6e92830da01bcf68b54e2b736e791590609bc76077f26efad8ee15809d1d3be76d20af2eecde3a90ec86b3dd0436bf4dd7b3ecc9bc76e3de77b7b564ec673dfa4f7ace79917333055a3e6415cb4dcfe249526e211d68b64496eaacd225990e5ff32fe3193827195aaee031765aa2bbb93edbc08660b1df709e97b9707f139c66d7d97dca950277bb466a397032fb24b7eeced648a306ee56c9691e704b592e4d0de4ffb241ac75b05fb7e8da2bb5203b65fb62c12d9c02be68a7046cb3459b15b8fb8d76f3d69d5be3b7f8d7f76337afe397bc086820b2ef5f74764d3498549a40ba1df622d75f4b5549e705ad9d7103e9a169bf32dcf453b40b48be8dee00c732f98b6e59c42af66f006be648a78891c8d9ddb341a3c5977aa980d2bf97dc4a096cab43ab052e989d371dabadf4b17bafd95ad3491b4224fafddeb777c81f3dbbbb03d7c7c7afdff842fb25a5c7c37a420bc5752d1a4b6a89d4f4742c9ed4274781d69f397b0db487add5dd7cdbd9df819149ed5d0d9fce761e48fd1c5ff2d0ddaf2eadbc2093e206e91db9f5d7408f576875514a23c5b63ccee349ce8fddad0592dd93240d9992744e3212fb820c77c253e1a4168ffd9ac00c58a3db59db5c227327430b64c5ce569dc60b325b4543c5ed8bda8033ce50d4acbf9657b5118f235e27077f926a53a699e45b9024cf3e41058c13ba002b0505d1830690c786bbdd663b1de918a7b94467db986569373f0fd434dcca8e8a04319aee638cdd1e6a626086a14cae6f769f1fc105dd7c895925f79477649649d24842e8267ce967823a87a64b3e431bfe024fc8b47d33557ef5334c657120e3f8ad5281358f00cb86ae2e63c66e93c3029079ee3e9085ef588b3cc13cc3b20ba49056a52917eae571c2daf455910529da83f8f2ef6d5c5a5999e897d622a8abd23db699b3cd343b5800b752200bfb57b0f4a9b97915d86e976be097130fb250cacb3da12ee625b2f30fa9bd41fbfbd4412f296a8004818b40feb048d1ab641572914f5e9d7082ac135f3fbfad0c890d52a5a421aa6c5fe82db292973d8c7fbf36dcad2c31ce3171d8a6494a79bfbb4af7a22698e6fe795e50e20a9e47c76245ca58d8e673db5cc30fac2f9f8362eed74ebf234a7efd0c1a6a9cea32366ddf3cbfb97be60957fc872a8c1ea2de88eba1a4ae4de1231e0e45c28ff4496d26acff0a81b31090d31722fbeb90b38748aa85faa4c12330b8096e3947f810c391f5571d68bb08e817d2caf3e177915765e2cb9549311ce483d21055057990aa0e667a38bbd5c29d5dc67da58ada910b9c7f2852cd1167bfe634b1fc366bd831bdd2f2930ed333bb312c7690a4c4faa4c1350c9eefb394228658f6494a73a5c5c066ffbe3f4487cb2f400d0cdc81a27ce34c5640c78ba09f07de901c4e850035305045b392fea5cb599cc228adc1fb8e9c66da583c36a1271257f4c4550d6b9d9dcef1b1e154d6596941750509a89c9d8cf3b407ccec11e348cd4250c7472671a1c606ced5eca16c1922fd93f188f69686288bae2ec97ac5968a45a802d47a3c0ab7c3112c905422a9ddd7b57054fb7efcf63bd7343d3a119b0c471f8c0aab042c101d49588430ec04419449573338b1fa652c6719aa02b4542587397037aa0e4e3c3598d46d093da48fd40d01787cb5f8291cc840ab692c0c549b2feec4425c1ff1d6a66208442643c910d0c5346f5d5853b52adcd323fa04a2126fbe38ad259eedd7c7bed4266313a9293d9a1493d33410e106e7a4d35bc4a1f0c621c911840c829aa98799feb63f39c643f72388931e86667474a71ed562d34944288f3852c26aefe33de91fbab88a5d213030d57493c84dde4075ddf20a70a481f628cf4b9cf7f5606bfb81b7b64160003f842652a929ee4abb7742f2653e5f69adc4e13262295e0ce4620fa44740ba8067907186b9d11f5472c3cb4255ca7e96abd2a4cb2ba2d1549b349f21ad275e218963f8da628d0e92c9c6f2a5558791d10f7f62bb2b2a99245093304ac4c398759a4738497c1c87f895ecec92c3229beb8c243e87b7e1bdf73ff8f0a38f3ff9f4da674096ebbcb54acbe1c7584a46201ad3a6e3e1194cf0071894644c4b4d4ff271907c18c6250fd5a872a6422938c6d82b8b75f22a49ef856678cef99b41501149c641feb5787c30d7e8f233527c3af40b833e64275d767ac40bfffeef49fd4ae22a072e082e80141ff31f2d895a900b2f9f9bfa4fa15424a9cd8422291dd07aee7d14cb5f819f200535fe1fc88c24d8228eeabf2fad272309cd4d1771188c7d3146575f12c3a0cd6d763a2f70aef8ed501ae30be1297a595c02c76b67289e6b6c9cd9e6816c250136a26c05dc55bf6bf81b016ae0b89b0ba49405bbdba5f345fc6d64bd16cf17de1879605b4f605cff2da9a9a4c75f34bb5785dba9484486494b4c84a21e920ce2290e2b7dd2606de0fa5f8059ad47";break;}$Ui=array();foreach(explode('^',fun_adm_lzw_decompress($rb))as$X){$Ui[]=(strpos($X,'~')?explode('~',$X):$X);}return$Ui;}$Ui=fun_adm_get_translations($ca);$ia='1.2.9';$_SERVER['VAR']['is_sidebar']=fun_adm_get_session('sidebar');!$_SERVER['VAR']['is_sidebar']&&$_SERVER['VAR']['is_sidebar']='true';if(isset($_POST['login_api'])){fun_adm_set_session('adm_logout',null);}define('ADM_API_LOGOUT',(boolean)fun_adm_get_session('adm_logout'));define('ADM_TIME',time());fun_adm_remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$Yc);if(get_magic_quotes_runtime()){set_magic_quotes_runtime(false);}if(!$_SERVER['REQUEST_URI']){$_SERVER['REQUEST_URI']=$_SERVER['ORIG_PATH_INFO'];}if(!strpos($_SERVER['REQUEST_URI'],'?')&&$_SERVER['QUERY_STRING']!=''){$_SERVER['REQUEST_URI'].="?$_SERVER[QUERY_STRING]";}$ba=isset($_SERVER['HTTPS'])&&strcasecmp($_SERVER['HTTPS'],'off');$Gg=$Ig=$Kg=$Hg=$Fg=$Jg='';$Jg=trim($this->conf_urlquery,'&');if(ADM_API_LOGOUT!==true&&$this->conf_isapi){$Gg=strtolower($this->conf_driver);$Ig=$this->conf_dbhost;$Kg=$this->conf_dbuser;$Hg=$this->conf_dbpass;$Fg=$this->conf_dbname;if(!fun_adm_get_session('sidebar')){$_SERVER['VAR']['is_sidebar']=$this->conf_sidebar_close?'false':'true';fun_adm_set_session('sidebar',$_SERVER['VAR']['is_sidebar']);}$Dg=$this->conf_dbmode;$Eg=$this->conf_tmpdir;define('ADM_API',time());}else if($_POST&&$_POST['driver']){$Ig=$_POST['server'];$Kg=trim($_POST['username']);$Hg=trim($_POST['password']);$Gg=$_POST['driver'];$Dg=$_POST['contype'];$Fg='';fun_adm_set_session('username',$Kg);define('ADM_API',false);if(!$Kg||!$Hg)fun_adm_set_session('show_msg',fun_adm_lang(0).' || '.fun_adm_lang(1).''.fun_adm_lang(2).fun_adm_lang(3));}else{define('ADM_API',false);$Fg='';if($_SESSION[ADM_USER_SID]){$Ig=fun_adm_get_session('server');$Kg=fun_adm_get_session('username');$Hg=fun_adm_get_session('password');$Fg=fun_adm_get_session('db');$Gg=fun_adm_get_session('driver');$Dg=fun_adm_get_session('contype');}}define('ADM_DEBUG',(bool)$this->conf_debug);define('ADM_DRIVER',$Gg);if(ADM_ISAPI&&$_POST&&!ADM_API){fun_adm_set_session('show_msg',$this->def_lang_in('apiwarning'));$Ig=$Kg=$Hg='';$_POST=array();}define('ADM_USER_DATA',fun_adm_DATA_parse($this->conf_tmpdir));$this->conf_driver=$Gg;$this->conf_dbhost=$Ig;$this->conf_dbuser=$Kg;$this->conf_dbpass=$Hg;$this->conf_tmpdir=ADM_USER_DATA;if($this->conf_dbname){$Mi=$this->conf_dbname;if(strpos($Mi,',')!==false){$Mi=explode(',',$Mi);foreach($Mi AS$y=>$W){$Mi[$y]=trim($W);}$_SERVER['DB_LIST']=$Mi;$Fg=$Mi[0];}else{$_SERVER['DB_LIST']=array($Mi);}}if(!$this->conf_isapi){fun_adm_set_session('adm_logout',null);}$_SERVER['STYPE']=array();$_SERVER['STYPE']['mysql']='MySQL';$_SERVER['STYPE']['pgsql']='PGSQL';if(extension_loaded('sqlite3')){$_SERVER['STYPE']['sqlite']='SQLite 3';}else if(extension_loaded('sqlite')&&function_exists('sqlite_open')){$_SERVER['STYPE']['sqlite']='SQLite 2';}$Dg=$Dg?strtolower($Dg):'none';if(ADM_DRIVER==='sqlite'){fun_adm_db_sqlite($Dg);$x="sqlite";$V=array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0);$ai=array_keys($V);$kj=array();$Hf=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");$od=array("hex","length","lower","round","unixepoch","upper");$ud=array("avg","count","count distinct","group_concat","max","min","sum");$mc=array(array(),array("integer|real|numeric"=>"+/-","text"=>"||",));}else if(ADM_DRIVER==='pgsql'){fun_adm_db_pgsql($Dg);$x="pgsql";$V=array();$ai=array();foreach(array(fun_adm_lang(4)=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),fun_adm_lang(5)=>array("date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0),fun_adm_lang(6)=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),fun_adm_lang(7)=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),fun_adm_lang(8)=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"txid_snapshot"=>0),fun_adm_lang(9)=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),)as$z=>$X){$V+=$X;$ai[$z]=array_keys($X);}$kj=array();$Hf=array("=","<",">","<=",">=","!=","~","!~","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");$od=array("char_length","lower","round","to_hex","to_timestamp","upper");$ud=array("avg","count","count distinct","max","min","sum");$mc=array(array("char"=>"md5","date|time"=>"now",),array(fun_adm_number_type()=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",));}else{fun_adm_db_mysql($Dg);$x="sql";$V=array();$ai=array();foreach(array(fun_adm_lang(4)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),fun_adm_lang(5)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),fun_adm_lang(6)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),fun_adm_lang(10)=>array("enum"=>65535,"set"=>64),fun_adm_lang(7)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),fun_adm_lang(9)=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),)as$z=>$X){$V+=$X;$ai[$z]=array_keys($X);}$kj=array("unsigned","zerofill","unsigned zerofill");$Hf=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");$od=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");$ud=array("avg","count","count distinct","group_concat","max","min","sum");$mc=array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array(fun_adm_number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",));}if(ADM_DRIVER&&!$b->operators){$b->operators=$Hf;}$Fg='';if(isset($_GET['db'])){$Fg=fun_adm__($_GET['db']);}if(isset($_POST['db'])&&is_string($_POST['db'])){$Fg=$_POST['db'];}define('ADM_DB_LOCK',$this->conf_dblock);if(ADM_DB_LOCK&&$Fg!==$this->conf_dbname){$Fg='';}!$Fg&&$Fg='';define('ADM_VERSION',$ia);define('ADM_DB',$Fg);define('ADM_USER_UID',$b->isUser());define('ADM_DATA_FULL',intval(fun_adm_get_session('adm_full')));$vh=$_SERVER['PHP_SELF']?basename($_SERVER['PHP_SELF']):basename($_SERVER['SCRIPT_FILENAME']);$oj=array('status','variables','sql','dump','database','processlist','privileges','user','script','refresh','ns','db','table','select','file','close','qadmin_clear','adm_api');$He=array();foreach($_GET AS$y=>$W){if(in_array($y,$oj)){continue;}else if($_GET[$y]){$He[$y]=$W;}}$Ze='';if($Jg){$Ze=$Jg.'&';}else{if(!ADM_USER_UID){if($He){$Ze=http_build_query($He).'&';}fun_adm_set_session('query_url',$Ze);}else{$Ze=fun_adm_get_session('query_url');if($Ze){$Ze=trim($Ze,'&').'&';}}$Jg=$Ze;}if(ADM_DB&&!$_GET["ns"]&&ADM_DRIVER==='pgsql'){$_GET["ns"]='public';}define('ADM_URL','./'.$vh.'?'.$Ze);define('ADM_ME',ADM_URL.(ADM_DB!=""?'db='.urlencode(ADM_DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"]).'&':''):''));define('ADM_THIS_URL',preg_replace('/\/[^\?]*\//is','',$_SERVER['REQUEST_URI']));if(!fun_adm_is_ajax()&&strtolower($_SERVER['REQUEST_METHOD'])!=='post'){fun_adm_set_session('referer',ADM_THIS_URL);}if($_GET['adm_full']){if(ADM_DATA_FULL===0){fun_adm_set_session('adm_full',1);}else{fun_adm_set_session('adm_full',0);}fun_adm_redirect(ADM_ME);}$f='';if(!$_POST&&$_REQUEST['refresh']){fun_adm_set_session('DatabaseSize',false);fun_adm_set_session('token',false);}$xd=fun_adm_get_session('token');if(!$xd){fun_adm_set_session('token',rand(1,1e6));}$T=fun_adm_get_token();$dc=array();if($_POST&&!fun_adm_verify_token()){$f=fun_adm_lang(11);}else{if(isset($_POST['lang'])&&isset($le[$_POST['lang']])){fun_adm_set_session('lang',$_POST['lang']);fun_adm_redirect(fun_adm_remove_from_uri());}if(isset($_POST['logout'])){$f=fun_adm_lang(12);}else if(empty($Kg)===false&&empty($Hg)===false){$f=fun_adm_connect();global$dc;$dc=new Cls_Adm_Min_Driver($f);}}if(!is_object($dc)||!is_object($f)||!$b->login($this->conf_dbuser,$this->conf_dbpass)){define('ADM_LOGIN_ERR',true);fun_adm_auth_error(fun_adm_h($f));fun_adm_page_header(fun_adm_lang(13),fun_adm_h($f),null);echo'    <div id="index_show"><code style="padding: 3px 0px; overflow: hidden;"><span style="color: #000000;"><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #DD0000">"Hello Qadminer"</span></span><span class="apiclick">API</span></code><p style="display: none;" id="apinote">',highlight_string(sprintf($this->conf_note['auth_info'],$ia),true),'</p></div>
';fun_adm_page_footer('auth');exit();}else{define('ADM_LOGIN_ERR',false);!$Gg&&$Gg='';!$Ig&&$Ig='';!$Kg&&$Kg='';!$Hg&&$Hg='';$Se=strtoupper(md5($Gg.$Kg.$Hg.$Dg));if(ADM_DB&&!$f->select_db(ADM_DB)){fun_adm_redirect(ADM_URL);}if($Se!==fun_adm_get_session('uid_md5')){fun_adm_set_session('driver',$this->conf_driver);fun_adm_set_session('server',$this->conf_dbhost);fun_adm_set_session('username',$this->conf_dbuser);fun_adm_set_session('password',$this->conf_dbpass);fun_adm_set_session('contype',$Dg);fun_adm_set_session('sesid',ADM_USER_SID);fun_adm_set_session('logintime',time());fun_adm_set_session('db',$Fg);fun_adm_un_session('token');if($_POST&&$_POST['contype']){!$_POST['server']&&$_POST['server']='localhost';fun_adm_set_session('Longin_Info',$_POST['driver'].'~'.$_POST['server'].'~'.$_POST['contype']);}fun_adm_set_session('uid_md5',$Se);fun_adm_redirect(0);exit();}}if(isset($_POST['db'])&&!$_FILES&&!isset($_GET['sql'])&&isset($_POST['token'])&&is_string($_POST['db'])){unset($_POST['token']);$qj=http_build_query($_POST);$nj=ADM_URL.$qj;fun_adm_redirect($nj);exit();}if(ADM_DB!=""&&$_GET["ns"]&&fun_adm_support("scheme")){if(!fun_adm_set_schema($_GET["ns"])){header("HTTP/1.1 404 Not Found");fun_adm_page_header(fun_adm_lang(14).": ".fun_adm_h($_GET["ns"]),fun_adm_lang(15),true);fun_adm_page_footer("ns");exit();}}$Cf="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";$vc="'(?:''|[^'\\\\]|\\\\.)*'";$Nd='IN|OUT|INOUT';if(isset($_GET['select'])&&($_POST['edit']||$_POST['clone'])&&!$_POST['save']){$_GET['edit']=$_GET['select'];}if(isset($_GET['callf'])){$_GET['call']=$_GET['callf'];}if(isset($_GET['function'])){$_GET['procedure']=$_GET['function'];}if(isset($_GET['status'])){$_GET['variables']=$_GET['status'];}if(isset($_GET['import'])){$_GET['sql']=$_GET['import'];}if(isset($_GET['download'])){$a=$_GET["download"];$n=fun_adm_fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".fun_adm_friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$M=array(fun_adm_idf_escape($_GET["field"]));$I=$dc->select($a,$M,array(fun_adm_where($_GET,$n)),$M);$K=($I?$I->fetch_row():array());echo$K[0];exit;}elseif(isset($_GET['table'])){$a=$_GET["table"];$n=fun_adm_fields($a);if(!$n){$l=fun_adm_error();}$R=fun_adm_table_status1($a,true);$E=$b->tableName($R);fun_adm_page_header(($n&&fun_adm_is_view($R)?fun_adm_lang(16):fun_adm_lang(17)).": ".($E!=""?$E:fun_adm_h($a)),$l);$b->selectLinks($R);$pb=$R["Comment"];if($pb!=""){echo"<p>".fun_adm_lang(18).": ".fun_adm_h($pb)."\n";}$Oc=$Pc=array();if($n){echo"<table cellspacing='0'>\n","<thead><tr><th>".fun_adm_lang(19)."<td>".fun_adm_lang(20).(fun_adm_support("comment")?"<td>".fun_adm_lang(18):"")."</thead>\n";foreach($n as$m){echo"<tr".fun_adm_odd()."><th>".fun_adm_h($m["field"]),"<td><span title='".fun_adm_h($m["collation"])."'>".fun_adm_h($m["full_type"])."</span>",($m["null"]?" <i>NULL</i>":""),($m["auto_increment"]?" <i>".fun_adm_lang(21)."</i>":""),(isset($m["default"])?" <span title='".fun_adm_lang(22)."'> [<b>".fun_adm_h($m["default"])."</b>]</span>":""),(fun_adm_support("comment")?"<td>".fun_adm_nbsp($m["comment"]):""),"\n";$Oc[]=$m["field"];$Pc[]='$Indata[\''.$m["field"].'\']';}echo"</table>\n";}if($Oc){$_POST['format']='sql';echo'<code class="tableinfoview">';$b->dumpTable($a,'DROP+CREATE',0);echo'</code><br />','<code class="tableinfoview">';$Rh="<?php\n// PHP code, can be directly used\n\$Indata = array();\n";foreach($Pc AS$y=>$X){$Rh.=$X." = '';\n";}$Rh.="\n".'$Indata[\'SQL\'] = "INSERT INTO `'.fun_adm_h($a).'`(`'.implode('`,`',$Oc).'`) VALUES (\'{'.implode('}\', \'{',$Pc).'}\')";';$Rh.="\n".'//There is any problem, you can directly print this array: $Indata';echo highlight_string($Rh,true),'</code>','<br />';}$Xh=fun_adm_table_status1($a);if($Xh){echo"<h3 id=\"TSTATUS\">".fun_adm_lang(17).fun_adm_lang(23)."</h3>\n","<table cellspacing='0'>\n";foreach($Xh as$E=>$W){echo"<tr title='".fun_adm_h($E)."'><th>{$E}</th><td>".$W."</td>\n";}echo"</table>\n";}if(!fun_adm_is_view($R)){if(fun_adm_support("indexes")){echo"<h3 id='indexes'>".fun_adm_lang(24)."</h3>\n";$v=fun_adm_indexes($a);if($v){echo"<table cellspacing='0'>\n";foreach($v as$E=>$u){ksort($u["columns"]);$vg=array();foreach($u["columns"]as$z=>$X){$vg[]="<i>".fun_adm_h($X)."</i>".($u["lengths"][$z]?"(".$u["lengths"][$z].")":"").($u["descs"][$z]?" DESC":"");}echo"<tr title='".fun_adm_h($E)."'><th>{$u['type']}<td>".implode(", ",$vg)."\n";}echo"</table>\n";}echo'<p class="links"><a href="'.fun_adm_h(ADM_ME).'indexes='.urlencode($a).'">'.fun_adm_lang(25)."</a>\n";}if(fun_adm_fk_support($R)){echo"<h3 id='foreign-keys'>".fun_adm_lang(26)."</h3>\n";$hd=fun_adm_foreign_keys($a);if($hd){echo"<table cellspacing='0'>\n","<thead><tr><th>".fun_adm_lang(27)."<td>".fun_adm_lang(28)."<td>".fun_adm_lang(29)."<td>".fun_adm_lang(30)."<td></thead>\n";foreach($hd as$E=>$p){echo"<tr title='".fun_adm_h($E)."'>","<th><i>".implode("</i>, <i>",array_map('fun_adm_h',$p["source"]))."</i>","<td><a href='".fun_adm_h($p["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($p["db"]),ADM_ME):($p["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($p["ns"]),ADM_ME):ADM_ME))."table=".urlencode($p["table"])."'>".($p["db"]!=""?"<b>".fun_adm_h($p["db"])."</b>.":"").($p["ns"]!=""?"<b>".fun_adm_h($p["ns"])."</b>.":"").fun_adm_h($p["table"])."</a>","(<i>".implode("</i>, <i>",array_map('fun_adm_h',$p["target"]))."</i>)","<td>".fun_adm_nbsp($p["on_delete"])."\n","<td>".fun_adm_nbsp($p["on_update"])."\n",'<td><a href="'.fun_adm_h(ADM_ME.'foreign='.urlencode($a).'&name='.urlencode($E)).'">'.fun_adm_lang(31).'</a>';}echo"</table>\n";}echo'<p class="links"><a href="'.fun_adm_h(ADM_ME).'foreign='.urlencode($a).'">'.fun_adm_lang(32)."</a>\n";}}if(fun_adm_support(fun_adm_is_view($R)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".fun_adm_lang(33)."</h3>\n";$aj=fun_adm_triggers($a);if($aj){echo"<table cellspacing='0'>\n";foreach($aj as$z=>$X){echo"<tr valign='top'><td>".fun_adm_h($X[0])."<td>".fun_adm_h($X[1])."<th>".fun_adm_h($z)."<td><a href='".fun_adm_h(ADM_ME.'trigger='.urlencode($a).'&name='.urlencode($z))."'>".fun_adm_lang(31)."</a>\n";}echo"</table>\n";}echo'<p class="links"><a href="'.fun_adm_h(ADM_ME).'trigger='.urlencode($a).'">'.fun_adm_lang(34)."</a>\n";}}elseif(isset($_GET['schema'])){fun_adm_page_header(fun_adm_lang(35),"",array(),fun_adm_h(ADM_DB.(isset($_GET["ns"])?".$_GET[ns]":"")));$b->homepage();$mi=array();$ni=array();$ea=($_GET['schema']?$_GET['schema']:'');$nj=fun_adm_h(ADM_ME."schema=".urlencode($ea));preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$Ke,PREG_SET_ORDER);foreach($Ke as$r=>$C){$mi[$C[1]]=array($C[2],$C[3]);$ni[]="\n\t'".fun_adm_js_escape($C[1])."': [ $C[2], $C[3] ]";}$Pi=0;$Ma=-1;$th=array();$Tg=array();$re=array();foreach(fun_adm_table_status('',true)as$Q=>$R){if(fun_adm_is_view($R)){continue;}$th[$Q]["fields"]=array();foreach(fun_adm_fields($Q)as$E=>$m){$th[$Q]["fields"][$E]=$m;}}echo'
<div id="schema">
';if($th){echo'<p class="links">';foreach($th as$E=>$Q){echo'<a href="'.$nj.'&#'.fun_adm_h($E).'">'.fun_adm_h($E).'</a> ';}echo'</p>';}foreach($th as$E=>$Q){echo'<br id="'.fun_adm_h($E).'" /><a href="'.fun_adm_h(ADM_ME).'table='.urlencode($E).'"><b>'.fun_adm_h($E)."</b></a> <a class=\"intop\" href=\"".$nj."\">TOP</a>",'<table class="table">';foreach($Q['fields']as$m){$X='<span'.fun_adm_type_class($m["type"]).'>'.fun_adm_h($m["field"]).'</span>';$m['auto_increment']&&$m['auto_increment']='Primary key';echo'<tr>','<td>'.$X.'</td>','<td>'.$m['full_type'].'</td>','<td>'.$m['collation'].'</td>','<td>'.$m['auto_increment'].'</td>','</tr>';}echo"</table>\n";}echo'
</div>
<p class="links"><a href="',$nj,'" id="schema-link">',fun_adm_lang(36),'</a>
';}elseif(isset($_GET['dump'])){$a=$_GET["dump"];if($_POST&&!$l){$Ab="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$z){$Ab.="&$z=".urlencode($_POST[$z]);}fun_adm_set_session("qadmin_export",substr($Ab,1));$S=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$Jc=fun_adm_dump_headers((fun_adm_count($S)==1?key($S):ADM_DB),(ADM_DB==""||fun_adm_count($S)>1));$Vd=preg_match('~sql~',$_POST["format"]);if($Vd){echo"-- Qadmin $ia dump\n\n";if($x=="sql"){echo"SET NAMES utf8;
SET time_zone = '+00:00';
".($_POST["data_style"]?"SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
":"")."
";$f->query("SET time_zone = '+00:00';");}}$bi=$_POST["db_style"];$j=array(ADM_DB);if(ADM_DB==""){$j=$_POST["databases"];if(is_string($j)){$j=explode("\n",rtrim(str_replace("\r","",$j),"\n"));}}foreach((array)$j as$k){$b->dumpDatabase($k);if($f->select_db($k)){if($Vd&&preg_match('~CREATE~',$bi)&&($h=$f->result("SHOW CREATE DATABASE ".fun_adm_idf_escape($k),1))){fun_adm_set_utf8mb4($h);if($bi=="DROP+CREATE"){echo"DROP DATABASE IF EXISTS ".fun_adm_idf_escape($k).";\n";}echo"$h;\n";}if($Vd){if($bi){echo fun_adm_use_sql($k).";\n\n";}$Wf="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$gh){foreach(fun_adm_get_rows("SHOW $gh STATUS WHERE Db = ".fun_adm_q($k),null,"-- ")as$K){$h=fun_adm_remove_definer($f->result("SHOW CREATE $gh ".fun_adm_idf_escape($K["Name"]),2));fun_adm_set_utf8mb4($h);$Wf.=($bi!='DROP+CREATE'?"DROP $gh IF EXISTS ".fun_adm_idf_escape($K["Name"]).";;\n":"")."$h;;\n\n";}}}if($_POST["events"]){foreach(fun_adm_get_rows("SHOW EVENTS",null,"-- ")as$K){$h=fun_adm_remove_definer($f->result("SHOW CREATE EVENT ".fun_adm_idf_escape($K["Name"]),3));fun_adm_set_utf8mb4($h);$Wf.=($bi!='DROP+CREATE'?"DROP EVENT IF EXISTS ".fun_adm_idf_escape($K["Name"]).";;\n":"")."$h;;\n\n";}}if($Wf){echo"DELIMITER ;;\n\n$Wf"."DELIMITER ;\n\n";}}if($_POST["table_style"]||$_POST["data_style"]){$Ej=array();foreach(fun_adm_table_status('',true)as$E=>$R){$Q=(ADM_DB==""||in_array($E,(array)$_POST["tables"]));$i=(ADM_DB==""||in_array($E,(array)$_POST["data"]));if($Q||$i){if($Jc=="tar"){$Ni=new TmpFile;ob_start(array($Ni,'write'),1e5);}$b->dumpTable($E,($Q?$_POST["table_style"]:""),(fun_adm_is_view($R)?2:0));if(fun_adm_is_view($R)){$Ej[]=$E;}elseif($i){$n=fun_adm_fields($E);$b->dumpData($E,$_POST["data_style"],"SELECT *".fun_adm_convert_fields($n,$n)." FROM ".fun_adm_table($E));}if($Vd&&$_POST["triggers"]&&$Q&&($aj=fun_adm_trigger_sql($E,$_POST["table_style"]))){echo"\nDELIMITER ;;\n$aj\nDELIMITER ;\n";}if($Jc=="tar"){ob_end_flush();fun_adm_tar_file((ADM_DB!=""?"":"$k/")."$E.csv",$Ni);}elseif($Vd){echo"\n";}}}foreach($Ej as$Dj){$b->dumpTable($Dj,$_POST["table_style"],1);}if($Jc=="tar"){echo pack("x512");}}}}if($Vd){echo"-- ".$f->result("SELECT NOW()")."\n";}exit;}$R=fun_adm_table_status1($a,true);fun_adm_page_header(fun_adm_lang(37),$l,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),fun_adm_h(ADM_DB));if($a){$b->selectLinks($R);}else{$b->homepage('def');}echo'
<form action="" method="post">
<table cellspacing="0">
';$Kb=array('','USE','DROP+CREATE','CREATE');$oi=array('','DROP+CREATE','CREATE');$Hb=array('','TRUNCATE+INSERT','INSERT');if($x=="sql"){$Hb[]='INSERT+UPDATE';}parse_str($_COOKIE["adminer_export"],$K);if(!$K){$K=array("output"=>"text","format"=>"sql","db_style"=>(ADM_DB!=""?'':'CREATE'),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");}if(!isset($K["events"])){$K["routines"]=$K["events"]=($_GET["dump"]=="");$K["triggers"]=$K["table_style"];}echo"<tr><th>".fun_adm_lang(38)."<td>".fun_adm_html_select("output",$b->dumpOutput(),$K["output"],0)."\n";echo"<tr><th>".fun_adm_lang(39)."<td>".fun_adm_html_select("format",$b->dumpFormat(),$K["format"],0)."\n";echo($x=="sqlite"?"":"<tr><th>".fun_adm_lang(40)."<td>".fun_adm_html_select('db_style',$Kb,$K["db_style"]).(fun_adm_support("routine")?fun_adm_checkbox("routines",1,$K["routines"],fun_adm_lang(41)):"").(fun_adm_support("event")?fun_adm_checkbox("events",1,$K["events"],fun_adm_lang(42)):"")),"<tr><th>".fun_adm_lang(43)."<td>".fun_adm_html_select('table_style',$oi,$K["table_style"]).fun_adm_checkbox("auto_increment",1,$K["auto_increment"],fun_adm_lang(21)).(fun_adm_support("trigger")?fun_adm_checkbox("triggers",1,$K["triggers"],fun_adm_lang(33)):""),"<tr><th>".fun_adm_lang(44)."<td>".fun_adm_html_select('data_style',$Hb,$K["data_style"]),'</table>
<p><input type="submit" value="',fun_adm_lang(37),'" />
<input type="hidden" name="token" value="',$T,'" />

<table cellspacing="0">
';$sg=array();if(ADM_DB!=''){$cb=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$cb onclick='formCheck(this, /^tables\\[/);'>".fun_adm_lang(43)."</label>","<th style='text-align: right;'><label class='block'>".fun_adm_lang(44)."<input type='checkbox' id='check-data'$cb onclick='formCheck(this, /^data\\[/);'></label>","</thead>\n";$Ej="";$qi=fun_adm_tables_list();foreach($qi as$E=>$U){$rg=preg_replace('~_.*~','',$E);$cb=($a==""||$a==(substr($a,-1)=="%"?"$rg%":$E));$vg="<tr><td>".fun_adm_checkbox("tables[]",$E,$cb,$E,"checkboxClick(event, this); formUncheck('check-tables');","block");if($U!==null&&!preg_match('~table~i',$U)){$Ej.="$vg\n";}else{echo"$vg<td align='right'><label class='block'><span id='Rows-".fun_adm_h($E)."'></span>".fun_adm_checkbox("data[]",$E,$cb,"","checkboxClick(event, this); formUncheck('check-data');")."</label>\n";}$sg[$rg]++;}echo$Ej;if($qi){echo"<script type='text/javascript'>ajaxSetHtml('".fun_adm_js_escape(ADM_ME)."script=db');</script>\n";}}else{echo"<thead><tr><th style='text-align: left;'><label class='block'><input type='checkbox' id='check-databases' onclick='formCheck(this, /^databases\\[/);'>".fun_adm_lang(40)."</label></th><th>".fun_adm_lang(45)."</th><th>".fun_adm_lang(17)."</th></tr></thead>\n";$j=$b->databases();$si=fun_adm_count_tables($j);if($j){foreach($j as$k){if(!fun_adm_information_schema($k)){$Rb=fun_adm_sizeformat(fun_adm_db_size($k));$rg=preg_replace('~_.*~','',$k);$si[$k]+=0;echo"<tr><td>".fun_adm_checkbox("databases[]",$k,false,$k,"formUncheck('check-databases');","block")."</td><td>{$Rb}</td><td>{$si[$k]}</td></tr>";$sg[$rg]++;}}}else{echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}}echo'</table>
</form>
';$Zc=true;foreach($sg as$z=>$X){if($z!=""&&$X>1){echo($Zc?"<p>":" ")."<a href='".fun_adm_h(ADM_ME)."dump=".urlencode("$z%")."'>".fun_adm_h($z)."</a>";$Zc=false;}}}elseif(isset($_GET['privileges'])){fun_adm_page_header(fun_adm_lang(46));$b->homepage('def');$I=$f->query("SELECT User, Host FROM mysql.".(ADM_DB==""?"user":"db WHERE ".fun_adm_q(ADM_DB)." LIKE Db")." ORDER BY Host, User");$qd=$I;if(!$I){$I=$f->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");}echo"<form enctype=\"application/x-www-form-urlencoded\" action=''><p>\n";fun_adm_hidden_fields_get();echo"<input type='hidden' name='db' value='".fun_adm_h(ADM_DB)."'>\n",($qd?"":"<input type='hidden' name='grant' value=''>\n"),"<table cellspacing='0'>\n","<thead><tr><th>".fun_adm_lang(0)."<th>".fun_adm_lang(47)."<th></thead>\n";$Vb=false;$Ae=0;while($K=$I->fetch_assoc()){if($K["User"]===''){$Vb=true;continue;}$Ae++;echo'<tr'.fun_adm_odd().'><td>'.fun_adm_h($K["User"])."<td>".fun_adm_h($K["Host"]).'<td><a href="'.fun_adm_h(ADM_ME.'user='.urlencode($K["User"]).'&host='.urlencode($K["Host"])).'">'.fun_adm_lang(48)."</a>\n";}if($Vb){$f->query("DELETE FROM mysql.db WHERE `User`=''");}if($Ae===0){$I=$f->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");while($K=$I->fetch_assoc()){if($K["User"]===''){continue;}echo'<tr'.fun_adm_odd().'><td>'.fun_adm_h($K["User"])."<td>".fun_adm_h($K["Host"]).'<td><a href="'.fun_adm_h(ADM_ME.'user='.urlencode($K["User"]).'&host='.urlencode($K["Host"])).'">'.fun_adm_lang(48)."</a>\n";}}if(!$qd||ADM_DB!=""){echo"<tr".fun_adm_odd()."><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".fun_adm_lang(48)."'>\n";}echo"</table>\n","</form>\n",'<p class="links"><a href="'.fun_adm_h(ADM_ME).'user=">'.fun_adm_lang(49)."</a>";}elseif(isset($_GET['sql'])){if(!$l&&$_POST['export']){fun_adm_dump_headers('sql');$b->dumpTable('','');$b->dumpData('','table',$_POST["query"]);exit();}$zd=fun_adm_get_session('queries','array');if(!$l&&$_POST['clear']){$zd=array();fun_adm_set_session('queries',null);fun_adm_redirect(fun_adm_remove_from_uri('history'));}$ze=array();$a=$_GET['sql'];if(!ADM_DB)$a='';$R=fun_adm_table_status1($a,true);fun_adm_page_header((isset($_GET["import"])?fun_adm_lang(50):fun_adm_lang(51)),$l,$ze);if($a){$b->selectLinks($R);}else{$b->homepage('def');}if(!$l&&$_POST){$ld=false;if(!isset($_GET["import"])){$H=trim($_POST["query"]);}elseif($_POST["webfile"]){$Qb='';if(file_exists('qadmin.sql')){$Qb='qadmin.sql';}else if(file_exists('qadmin.sql.gz')){$Qb='compress.zlib://qadmin.sql.gz';}if($Qb)$ld=@fopen($Qb,'rb');$H=($ld?fread($ld,1e9):false);}else{$H=fun_adm_get_file("sql_file",true);}if(is_string($H)){if(function_exists('memory_get_usage')){@ini_set("memory_limit",max(fun_adm_ini_bytes("memory_limit"),2*strlen($H)+memory_get_usage()+8e6));}if($H!=""&&strlen($H)<1e6){$Ag=$H.(preg_match("~;[ \t\r\n]*\$~",$H)?'':";");$wi=array();if($zd[ADM_DB])$wi=end($zd[ADM_DB]);if(!$zd[ADM_DB]||reset($wi)!=$Ag){$zd[ADM_DB][]=array($Ag,time());fun_adm_set_session('queries',$zd);}}$Oh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Wb=";";$wf=0;$sc=true;$g=fun_adm_connect();if(is_object($g)&&ADM_DB!=""){$g->select_db(ADM_DB);}$ob=0;$_c=array();$ag='[\'"'.($x=="sql"?'`#':($x=="sqlite"?'`[':($x=="mssql"?'[':''))).']|/\\*|-- |$'.($x=="pgsql"?'|\\$[^$]*\\$':'');$Qi=microtime(true);parse_str(fun_adm_get_session('qadmin_export'),$sa);$jc=$b->dumpFormat();unset($jc["sql"]);while($H!==''){if(!$wf&&preg_match("~^$Oh*+DELIMITER\\s+(\\S+)~i",$H,$C)){$Wb=$C[1];$H=substr($H,strlen($C[0]));}else{preg_match('('.preg_quote($Wb)."\\s*|$ag)",$H,$C,PREG_OFFSET_CAPTURE,$wf);list($jd,$qg)=$C[0];if(!$jd&&$ld&&!feof($ld)){$H.=fread($ld,1e5);}else{if(!$jd&&rtrim($H)==""){break;}$wf=$qg+strlen($jd);if($jd&&rtrim($jd)!=$Wb){while(preg_match('('.($jd=='/*'?'\*/':($jd=='['?']':(preg_match('~^-- |^#~',$jd)?"\n":preg_quote($jd)."|\\\\."))).'|$)s',$H,$C,PREG_OFFSET_CAPTURE,$wf)){$kh=$C[0][0];if(!$kh&&$ld&&!feof($ld)){$H.=fread($ld,1e5);}else{$wf=$C[0][1]+strlen($kh);if($kh[0]!="\\"){break;}}}}else{$sc=false;$Ag=substr($H,0,$qg);$ob++;$vg="<pre id='sql-$ob'><code class='jush-$x'>".fun_adm_shorten_utf8(trim($Ag),1000)."</code></pre>\n";if($x=="sqlite"&&preg_match("~^$Oh*+ATTACH\\b~i",$Ag,$C)){echo$vg,"<p class='error'>".fun_adm_lang(52)."\n";$_c[]=" <a href='#sql-$ob'>$ob</a>";if($_POST["error_stops"]){break;}}else{if(!$_POST["only_errors"]){echo$vg;ob_flush();flush();}$Vh=microtime(true);if($f->multi_query($Ag)&&is_object($g)&&preg_match("~^$Oh*+USE\\b~i",$Ag)){$g->query($Ag);}do{$I=$f->store_result();$Ci=" <span class='time'>(".fun_adm_format_time($Vh).")</span>".(strlen($Ag)<1000?" <a href='".fun_adm_h(ADM_ME)."sql=".urlencode(trim($Ag))."'>".fun_adm_lang(48)."</a>":"");if($f->error){echo($_POST["only_errors"]?$vg:""),"<p class='error'>".fun_adm_lang(53).($f->errno?" ($f->errno)":"").": ".fun_adm_error()."\n";$_c[]=" <a href='#sql-$ob'>$ob</a>";if($_POST["error_stops"]){break 2;}}elseif(is_object($I)){$_=$_POST["limit"];$Qf=fun_adm_select($I,$g,array(),$_);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$sf=$I->num_rows;echo"<p>".($sf?($_&&$sf>$_?fun_adm_lang(54,$_):"").fun_adm_lang(55,$sf):""),$Ci;$s="export-$ob";$Ic=", <a href='#$s' onclick=\"return !toggle('$s');\">".fun_adm_lang(37)."</a><span id='$s' class='hidden'>: ".fun_adm_html_select("output",$b->dumpOutput(),$sa["output"])." ".fun_adm_html_select("format",$jc,$sa["format"])."<input type='hidden' name='query' value='".fun_adm_h($Ag)."'>"." <input type='submit' name='export' value='".fun_adm_lang(37)."'><input type='hidden' name='token' value='$T'></span>\n";if($g&&preg_match("~^($Oh|\\()*+SELECT\\b~i",$Ag)&&($Hc=fun_adm_explain($g,$Ag))){$s="explain-$ob";echo", <a href='#$s' onclick=\"return !toggle('$s');\">EXPLAIN</a>$Ic","<div id='$s' class='hidden'>\n";fun_adm_select($Hc,$g,$Qf);echo"</div>\n";}else{echo$Ic;}echo"</form>\n";}}else{if(preg_match("~^$Oh*+(CREATE|DROP|ALTER)$Oh++(DATABASE|SCHEMA)\\b~i",$Ag)){fun_adm_set_session("dbs",null);}if(!$_POST["only_errors"]){echo"<p class='message' title='".fun_adm_h($f->info)."'>".fun_adm_lang(56,$f->affected_rows).$Ci."\n";}}$Vh=microtime(true);}while($f->next_result());$H=substr($H,$wf);$wf=0;}}}}}if($sc){echo"<p class='message'>".fun_adm_lang(57)."\n";}elseif($_POST["only_errors"]){echo"<p class='message'>".fun_adm_lang(58,$ob-fun_adm_count($_c))," <span class='time'>(".fun_adm_format_time($Qi).")</span>\n";}elseif($_c&&$ob>1){echo"<p class='error'>".fun_adm_lang(53).": ".implode("",$_c)."\n";}}else{echo"<p class='error'>".fun_adm_upload_error($H)."\n";}}echo'<form action="" method="POST" enctype="multipart/form-data" id="form">';$Fc="<input type='submit' value='".fun_adm_lang(59)."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$Ag=$_GET["sql"];if($_POST){$Ag=$_POST["query"];}elseif($_GET["history"]=="all"){$Ag=$zd[ADM_DB];}elseif(isset($_GET["history"])){$Ag=$zd[ADM_DB][$_GET["history"]][0];}echo"<p>";fun_adm_textarea("query",$Ag,20);echo($_POST?"":"<script type='text/javascript'>document.getElementsByTagName('textarea')[0].focus();</script>\n"),"<p>$Fc\n";$_=$_GET["limit"]?$_GET["limit"]:0;echo fun_adm_lang(60).": <input type='number' name='limit' class='size' value='".fun_adm_h($_POST?$_POST["limit"]:$_)."'>\n";}else{echo"<fieldset><legend>".fun_adm_lang(61)."</legend><div>",(fun_adm_ini_bool("file_uploads")?"SQL,GZ(&lt; ".ini_get("upload_max_filesize")."B): <input type=\"file\" name=\"sql_file[]\" multiple>\n
        <input type='submit' value='".fun_adm_lang(61)."' title='Ctrl+Enter'>":fun_adm_lang(62)),"</div></fieldset>\n","<br /><fieldset><legend>".fun_adm_lang(63)."</legend><div>",fun_adm_lang(64,"<code>qadmin.sql".(extension_loaded("zlib")?"[.gz]":"")."</code>");$Ea=array();if(is_file('./qadmin.sql')){$Ea[]='qadmin.sql '.fun_adm_lang(65).' '.fun_adm_lang(63).':'.fun_adm_sizeformat(filesize('./qadmin.sql'));}if(is_file('./qadmin.sql.gz')){$Ea[]='qadmin.sql.gz '.fun_adm_lang(65).' '.fun_adm_lang(63).':'.fun_adm_sizeformat(filesize('./qadmin.sql.gz'));}$lb='blue';if(!$Ea){$Ea=array('qadmin.sql, qadmin.sql.gz '.fun_adm_lang(66));$lb='gray';}else{echo' <input type="submit" name="webfile" value="'.fun_adm_lang(67).'">';}$Ea=implode('<br />',$Ea);echo'<p style="color:'.$lb.'">'.$Ea.'</p>',"</div></fieldset>\n","<p style=\"clear: both;\">";}echo fun_adm_checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])),fun_adm_lang(68))."\n",fun_adm_checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])),fun_adm_lang(69))."\n","<input type='hidden' name='token' value='$T'>\n";$zd=$zd[ADM_DB];if(!isset($_GET["import"])&&$zd){fun_adm_print_fieldset("history",fun_adm_lang(70).'['.fun_adm_count($zd).']',isset($_GET["history"]));for($X=end($zd);$X;$X=prev($zd)){$z=key($zd);if(!isset($X[2])){$X[2]='';}list($Ag,$Ci,$oc)=$X;echo'<a href="'.fun_adm_h(ADM_ME."sql=&history=$z").'">'.fun_adm_lang(48)."</a>"." <span class='time' title='".@date('Y-m-d',$Ci)."'>".@date("H:i:s",$Ci)."</span>"." <code class='jush-$x'>".fun_adm_shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$Ag)))),80,"</code>").($oc?" <span class='time'>($oc)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".fun_adm_lang(71)."'>\n","<a href='".fun_adm_h(ADM_ME."sql=&history=all")."'>".fun_adm_lang(72)."</a>\n","</div></fieldset>\n";}$j=$b->databases();$Sh="<option value=\"0\">".fun_adm_lang(40)."</option>";foreach($j AS$X){$Za='';if(ADM_DB!==''){if($X===ADM_DB){$Za=' selected="selected"';}}$Sh.="<option{$Za} value=\"{$X}\">{$X}</option>";}$Th="<option value=\"0\">".fun_adm_lang(17)."</option>";$qi=fun_adm_tables_list();foreach($qi AS$z=>$X){$Za='';if($a){if($z===$a){$Za=' selected="selected"';}}$Th.="<option{$Za} value=\"{$z}\">{$z}</option>";}$dd=fun_adm_printSql($a);fun_adm_print_fieldset("xTable",fun_adm_lang(17).'['.ADM_DB.'_'.$a.']',false);echo"<div id=\"sqldbtable\" style=\"text-align: right;\"><select name=\"db\">".$Sh."</select> <select name=\"tables\">".$Th."</select></div><textarea id=\"sqlcode\" style=\"width:800px; height:200px\">{$dd}</textarea>","</div></fieldset>\n",'</form>';}elseif(isset($_GET['edit'])){$a=$_GET['edit'];$n=fun_adm_fields($a);$Z=(isset($_GET["select"])?(fun_adm_count($_POST["check"])==1?fun_adm_where_check($_POST["check"][0],$n):""):fun_adm_where($_GET,$n));$lj=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($n as$E=>$m){if(!isset($m["privileges"][$lj?"update":"insert"])||$b->fieldName($m)==""){unset($n[$E]);}}if($_POST&&!$l&&!isset($_GET['select'])){$B=fun_adm_get_session('referer');if($_POST["insert"]){$B=($lj?null:$_SERVER["REQUEST_URI"]);}elseif(!preg_match('~^.+&select=.+$~',$B)){$B=ADM_ME."select=".urlencode($a);}$v=fun_adm_indexes($a);$gj=fun_adm_unique_array($_GET["where"],$v);$Lg="\nWHERE $Z";if(isset($_POST['delete'])){fun_adm_queries_redirect($B,fun_adm_lang(73),$dc->delete($a,$Lg,!$gj));}else{$N=array();foreach($n as$E=>$m){$X=fun_adm_process_input($m);if($X!==false&&$X!==null){$N[fun_adm_idf_escape($E)]=$X;}}if($lj){if(!$N){fun_adm_redirect($B);}fun_adm_queries_redirect($B,fun_adm_lang(74),$dc->update($a,$N,$Lg,!$gj));if(fun_adm_is_ajax()){fun_adm_page_header();fun_adm_page_messages($l);exit;}}else{$I=$dc->insert($a,$N);$oe=($I?fun_adm_last_id():0);fun_adm_queries_redirect($B,fun_adm_lang(75,($oe?" $oe":"")),$I);}}}$K=null;if($_POST["save"]){$K=(array)$_POST["fields"];}elseif($Z){$M=array();foreach($n as$E=>$m){if(isset($m["privileges"]["select"])){$Da=fun_adm_convert_field($m);if($_POST["clone"]&&$m["auto_increment"]){$Da="''";}if($x=="sql"&&preg_match("~enum|set~",$m["type"])){$Da="1*".fun_adm_idf_escape($E);}$M[]=($Da?"$Da AS ":"").fun_adm_idf_escape($E);}}$K=array();if(!fun_adm_support("table")){$M=array("*");}if($M){$I=$dc->select($a,$M,array($Z),$M,array(),(isset($_GET["select"])?2:1));$K=$I->fetch_assoc();if(!$K){$K=false;}if(isset($_GET["select"])&&(!$K||$I->fetch_assoc())){$K=null;}}}if(!fun_adm_support("table")&&!$n){if(!$Z){$I=$dc->select($a,array("*"),$Z,array("*"));$K=($I?$I->fetch_assoc():false);if(!$K){$K=array($dc->primary=>"");}}if($K){foreach($K as$z=>$X){if(!$Z){$K[$z]=null;}$n[$z]=array("field"=>$z,"null"=>($z!=$dc->primary),"auto_increment"=>($z==$dc->primary));}}}fun_adm_edit_form($a,$n,$K,$lj);}elseif(isset($_GET['create'])){$a=$_GET["create"];$cg=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$z){$cg[$z]=$z;}$Sg=fun_adm_referencable_primary($a);$hd=array();foreach($Sg as$ki=>$m){$hd[str_replace("`","``",$ki)."`".str_replace("`","``",$m["field"])]=$ki;}$Tf=array();$R=array();if($a!=""){$Tf=fun_adm_fields($a);$R=fun_adm_table_status($a);if(!$R){$l=fun_adm_lang(76);}}$K=$_POST;$K["fields"]=(array)$K["fields"];if($K["auto_increment_col"]){$K["fields"][$K["auto_increment_col"]]["auto_increment"]=true;}if($_POST&&!fun_adm_process_fields($K["fields"])&&!$l){if($_POST["drop"]){fun_adm_queries_redirect(substr(ADM_ME,0,-1),fun_adm_lang(77),fun_adm_drop_tables(array($a)));}else{$n=array();$xa=array();$rj=false;$fd=array();ksort($K["fields"]);$Sf=reset($Tf);$va=" FIRST";foreach($K["fields"]as$z=>$m){$p=$hd[$m["type"]];$bj=($p!==null?$Sg[$p]:$m);if($m["field"]!=""){if(!$m["has_default"]){$m["default"]=null;}if($z==$K["auto_increment_col"]){$m["auto_increment"]=true;}$zg=fun_adm_process_field($m,$bj);$xa[]=array($m["orig"],$zg,$va);if($zg!=fun_adm_process_field($Sf,$Sf)){$n[]=array($m["orig"],$zg,$va);if($m["orig"]!=""||$va){$rj=true;}}if($p!==null){$fd[fun_adm_idf_escape($m["field"])]=($a!=""&&$x!="sqlite"?"ADD":" ").fun_adm_format_foreign_key(array('table'=>$hd[$m["type"]],'source'=>array($m["field"]),'target'=>array($bj["field"]),'on_delete'=>$m["on_delete"],));}$va=" AFTER ".fun_adm_idf_escape($m["field"]);}elseif($m["orig"]!=""){$rj=true;$n[]=array($m["orig"]);}if($m["orig"]!=""){$Sf=next($Tf);if(!$Sf){$va="";}}}$eg="";if($cg[$K["partition_by"]]){$fg=array();if($K["partition_by"]=='RANGE'||$K["partition_by"]=='LIST'){foreach(array_filter($K["partition_names"])as$z=>$X){$Y=$K["partition_values"][$z];$fg[]="\n  PARTITION ".fun_adm_idf_escape($X)." VALUES ".($K["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$eg.="\nPARTITION BY $K[partition_by]($K[partition])".($fg?" (".implode(",",$fg)."\n)":($K["partitions"]?" PARTITIONS ".(+$K["partitions"]):""));}elseif(fun_adm_support("partitioning")&&preg_match("~partitioned~",$R["Create_options"])){$eg.="\nREMOVE PARTITIONING";}$D=fun_adm_lang(78);if($a==""){fun_adm_set_session('qadmin_engine',$K["Engine"]);$D=fun_adm_lang(79);}$E=trim($K["name"]);fun_adm_queries_redirect(ADM_ME.(fun_adm_support("table")?"table=":"select=").urlencode($E),$D,fun_adm_alter_table($a,$E,($x=="sqlite"&&($rj||$fd)?$xa:$n),$fd,($K["Comment"]!=$R["Comment"]?$K["Comment"]:null),($K["Engine"]&&$K["Engine"]!=$R["Engine"]?$K["Engine"]:""),($K["Collation"]&&$K["Collation"]!=$R["Collation"]?$K["Collation"]:""),($K["Auto_increment"]!=""?fun_adm_number($K["Auto_increment"]):""),$eg));}}fun_adm_page_header(($a!=''?fun_adm_lang(80):fun_adm_lang(81)),$l,array("table"=>$a),fun_adm_h($a));$b->selectLinks($R);if(!$_POST){$K=array("Engine"=>fun_adm_get_session('qadmin_engine'),"fields"=>array(array("field"=>"","type"=>(isset($V["int"])?"int":(isset($V["integer"])?"integer":"")))),"partition_names"=>array(""),);if($a!=""){$K=$R;$K["name"]=$a;$K["fields"]=array();foreach($Tf as$m){$m["has_default"]=isset($m["default"]);$K["fields"][]=$m;}if(fun_adm_support("partitioning")){$md="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".fun_adm_q(ADM_DB)." AND TABLE_NAME = ".fun_adm_q($a);$I=$f->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $md ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($K["partition_by"],$K["partitions"],$K["partition"])=$I->fetch_row();$fg=fun_adm_get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $md AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$fg[""]="";$K["partition_names"]=array_keys($fg);$K["partition_values"]=array_values($fg);}}}$R=fun_adm_table_status1($a);$kb=fun_adm_collations();$uc=fun_adm_engines();foreach($uc as$tc){if(!strcasecmp($tc,$K["Engine"])){$K["Engine"]=$tc;break;}}echo'<form action="" enctype="application/x-www-form-urlencoded" method="post" id="form">
<p>
';if(fun_adm_support("columns")||$a==""){echo fun_adm_lang(82),': <input name="name" maxlength="64" value="',fun_adm_h($K["name"]),'" autocapitalize="off">
';if($a==""&&!$_POST){?><script type='text/javascript'>focus(document.getElementById('form')['name']);</script><?php }echo($uc?"<select name='Engine' onchange='helpClose();'".fun_adm_on_help("getTarget(event).value",1).">".fun_adm_optionlist(array(""=>"(".fun_adm_lang(83).")")+$uc,$K["Engine"])."</select>":""),' ',($kb&&!preg_match("~sqlite|mssql~",$x)?fun_adm_html_select("Collation",array(""=>"(".fun_adm_lang(84).")")+$kb,$K["Collation"]):""),' <input type="submit" value="',fun_adm_lang(85),'" />

';}echo'
';if(fun_adm_support("columns")){echo'<table cellspacing="0" id="edit-fields" class="nowrap">
';$qb=($_POST?$_POST["comments"]:$K["Comment"]!="");if(!$_POST&&!$qb){foreach($K["fields"]as$m){if($m["comment"]!=""){$qb=true;break;}}}fun_adm_edit_fields($K["fields"],$kb,"TABLE",$hd,$qb);echo'</table>
<p>
',fun_adm_lang(21),': <input type="number" name="Auto_increment" size="6" value="',fun_adm_h($K["Auto_increment"]),'" />
',fun_adm_checkbox("defaults",1,!$_POST||$_POST["defaults"],fun_adm_lang(22),"columnShow(this.checked, 5)","jsonly");if(!$_POST){echo'<script type="text/javascript">editingHideDefaults()</script>';}echo'
 ',(fun_adm_support("comment")?"<label><input type='checkbox' name='comments' value='1' class='jsonly'".($qb?" checked":"").">".fun_adm_lang(18)."</label>".fun_adm_script("qsl('input').onclick = partial(editingCommentsClick, true);").' <input name="Comment" value="'.fun_adm_h($K["Comment"]).'" maxlength="'.(fun_adm_min_version(5.5)?2048:60).'"'.($qb?'':' class="hidden"').'>':''),'<p>
<input type="submit" value="',fun_adm_lang(85),'" />
 <input type="submit" class="adm_refresh" value="',fun_adm_lang(86),'" />
';}echo'
';if($a!=""){echo'<input type="submit" name="drop" value="',fun_adm_lang(87),'"',fun_adm_confirm(),'>';}if(fun_adm_support("partitioning")){$dg=preg_match('~RANGE|LIST~',$K["partition_by"]);fun_adm_print_fieldset("partition",fun_adm_lang(88),$K["partition_by"]);echo'<p>
',"<select name='partition_by' onchange='partitionByChange(this);'".fun_adm_on_help("getTarget(event).value.replace(/./, 'PARTITION BY \$&')",1).">".fun_adm_optionlist(array(""=>"")+$cg,$K["partition_by"])."</select>",'(<input name="partition" value="',fun_adm_h($K["partition"]),'">)
',fun_adm_lang(89),': <input type="number" name="partitions" class="size',($dg||!$K["partition_by"]?" hidden":""),'" value="',fun_adm_h($K["partitions"]),'">
<table cellspacing="0" id="partition-table"',($dg?"":" class='hidden'"),'>
<thead><tr><th>',fun_adm_lang(90),'<th>',fun_adm_lang(91),'</thead>
';foreach($K["partition_names"]as$z=>$X){echo'<tr>','<td><input name="partition_names[]" value="'.fun_adm_h($X).'"'.($z==fun_adm_count($K["partition_names"])-1?' onchange="partitionNameChange(this);"':'').' autocapitalize="off">','<td><input name="partition_values[]" value="'.fun_adm_h($K["partition_values"][$z]).'">';}echo'</table>
</div></fieldset>
';}echo'<input type="hidden" name="token" value="',$T,'" />
</form>
',fun_adm_script("qs('#form')['defaults'].onclick();".(fun_adm_support("comment")?" editingCommentsClick.call(qs('#form')['comments']);":""));}elseif(isset($_GET['indexes'])){$a=$_GET['indexes'];$Gd=array("PRIMARY","UNIQUE","INDEX");$R=fun_adm_table_status($a,true);if(preg_match('~MyISAM|M?aria'.($f->server_info>=5.6?'|InnoDB':'').'~i',$R["Engine"])){$Gd[]="FULLTEXT";}if(preg_match('~MyISAM|M?aria'.($f->server_info>=5.7?'|InnoDB':'').'~i',$R["Engine"])){$Gd[]="SPATIAL";}$v=fun_adm_indexes($a);$tg=array();if($x=="mongo"){$tg=$v["_id_"];unset($Gd[0]);unset($v["_id_"]);}$K=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["drop_col"]){$c=array();foreach($K["indexes"]as$u){$E=$u["name"];if(in_array($u["type"],$Gd)){$e=array();$ve=array();$Yb=array();$N=array();ksort($u["columns"]);foreach($u["columns"]as$z=>$d){if($d!=""){$ue=$u["lengths"][$z];$Xb=$u["descs"][$z];$N[]=fun_adm_idf_escape($d).($ue?"(".(+$ue).")":"").($Xb?" DESC":"");$e[]=$d;$ve[]=($ue?$ue:null);$Yb[]=$Xb;}}if($e){$Gc=$v[$E];if($Gc){ksort($Gc["columns"]);ksort($Gc["lengths"]);ksort($Gc["descs"]);if($u["type"]==$Gc["type"]&&array_values($Gc["columns"])===$e&&(!$Gc["lengths"]||array_values($Gc["lengths"])===$ve)&&array_values($Gc["descs"])===$Yb){unset($v[$E]);continue;}}$c[]=array($u["type"],$E,$N);}}}foreach($v as$E=>$Gc){$c[]=array($Gc["type"],$E,"DROP");}if(!$c){fun_adm_redirect(ADM_ME."table=".urlencode($a));}fun_adm_queries_redirect(ADM_ME."table=".urlencode($a),fun_adm_lang(92),fun_adm_alter_indexes($a,$c));}$R=fun_adm_table_status1($a,true);fun_adm_page_header(fun_adm_lang(24),$l,array("table"=>$a),fun_adm_h($a));$b->selectLinks($R);$n=array_keys(fun_adm_fields($a));if($_POST["add"]){foreach($K["indexes"]as$z=>$u){if($u["columns"][fun_adm_count($u["columns"])]!=""){$K["indexes"][$z]["columns"][]="";}}$u=end($K["indexes"]);if($u["type"]||array_filter($u["columns"],'strlen')){$K["indexes"][]=array("columns"=>array(1=>""));}}if(!$K){foreach($v as$z=>$u){$v[$z]["name"]=$z;$v[$z]["columns"][]="";}$v[]=array("columns"=>array(1=>""));$K["indexes"]=$v;}echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post">
<table cellspacing="0" class="nowrap">
<thead><tr>
<th id="label-type">',fun_adm_lang(93),'</th>
<th><input type="submit" class="wayoff" />',fun_adm_lang(94),'</th>
<th id="label-name">',fun_adm_lang(95),'</th>
<th><noscript>',"<input type='image' class='icon' name='add[0]' src='".fun_adm_incl('plus.gif')."' alt='+' title='".fun_adm_lang(96)."'>",'</noscript>
</thead>
';if($tg){echo"<tr><td>PRIMARY<td>";foreach($tg["columns"]as$z=>$d){echo fun_adm_sel_input(" disabled",$n,$d),"<label><input disabled type='checkbox'>".fun_adm_lang(97)."</label> ";}echo"<td><td>\n";}$w=1;foreach($K["indexes"]as$u){if(!$_POST["drop_col"]||$w!=key($_POST["drop_col"])){echo"<tr><td>".fun_adm_html_select("indexes[$w][type]",array(-1=>"")+$Gd,$u["type"],($w==fun_adm_count($K["indexes"])?"indexesAddRow(this);":1),"label-type"),"<td>";ksort($u["columns"]);$r=1;foreach($u["columns"]as$z=>$d){echo"<span>".fun_adm_sel_input(" name='indexes[$w][columns][$r]' onchange=\"".($r==fun_adm_count($u["columns"])?"indexesAddColumn":"indexesChangeColumn")."(this, '".fun_adm_h(fun_adm_js_escape($x=="sql"?"":$_GET["indexes"]."_"))."');\" title='".fun_adm_lang(19)."'",($n?array_combine($n,$n):$n),$d),($x=="sql"||$x=="mssql"?"<input type='number' name='indexes[$w][lengths][$r]' class='size' value='".fun_adm_h($u["lengths"][$z])."' title='".fun_adm_lang(2)."'>":""),($x!="sql"?fun_adm_checkbox("indexes[$w][descs][$r]",1,$u["descs"][$z],fun_adm_lang(97)):"")," </span>";$r++;}echo"<td><input name='indexes[{$w}][name]' value='".fun_adm_h($u["name"])."' autocapitalize='off' aria-labelledby='label-name'>\n","<td><input type='image' class='icon' name='drop_col[{$w}]' src='".fun_adm_incl('cross.gif')."' alt='x' title='".fun_adm_lang(98)."' onclick=\"return !editingRemoveRow(this, 'indexes\$1[type]');\">\n";}$w++;}echo'</table>
<p>
<input type="submit" value="',fun_adm_lang(85),'" />
<input type="hidden" name="token" value="',$T,'" />
</form>
';}elseif(isset($_GET['database'])){$K=$_POST;if($_POST&&!$l&&!isset($_POST["add_x"])){$E=trim($K['name']);if($_POST["drop"]){$_GET["db"]="";fun_adm_set_session('db',null);fun_adm_queries_redirect(fun_adm_remove_from_uri("db|database"),fun_adm_lang(99),fun_adm_drop_databases(array(ADM_DB)));}elseif(ADM_DB!==$E){if(ADM_DB!=""){$_GET["db"]=$E;fun_adm_set_session('db',null);fun_adm_queries_redirect(preg_replace('~\bdb=[^&]*&~','',ADM_ME)."db=".urlencode($E),fun_adm_lang(100),fun_adm_rename_database($E,$K["collation"]));}else{$j=explode("\n",str_replace("\r","",$E));$ci=true;$ne="";foreach($j as$k){if(fun_adm_count($j)==1||$k){if(!fun_adm_create_database($k,$K['collation'])){$ci=false;}$ne=$k;}}fun_adm_queries_redirect(ADM_ME."db=".urlencode($ne),fun_adm_lang(101),$ci);}}else{if(!$K["collation"]){fun_adm_redirect(substr(ADM_ME,0,-1));}fun_adm_query_redirect("ALTER DATABASE ".fun_adm_idf_escape($E).(preg_match('~^[a-z0-9_]+$~i',$K["collation"])?" COLLATE $K[collation]":""),substr(ADM_ME,0,-1),fun_adm_lang(102));}}fun_adm_page_header(ADM_DB!=""?fun_adm_lang(103):fun_adm_lang(104),$l,array(),fun_adm_h(ADM_DB));$b->homepage('def');$kb=fun_adm_collations();$E=ADM_DB;if($_POST){$E=$K["name"];}elseif(ADM_DB!=""){$K["collation"]=fun_adm_db_collation(ADM_DB,$kb);}elseif($x=="sql"){foreach(fun_adm_get_vals("SHOW GRANTS")as$qd){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$qd,$C)&&$C[1]){$E=stripcslashes(fun_idf_unescape("`$C[2]`"));break;}}}echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post">
<p>
',($_POST["add_x"]||strpos($E,"\n")?'<textarea id="name" name="name" rows="10" cols="40">'.fun_adm_h($E).'</textarea><br>':'<input name="name" id="name" value="'.fun_adm_h($E).'" maxlength="64" autocapitalize="off">')."\n".($kb?fun_adm_html_select("collation",array(""=>"(".fun_adm_lang(84).")")+$kb,$K["collation"]).fun_adm_doc_link(array('sql'=>"charset-charsets.html",'mssql'=>"ms187963.aspx",)):"");?>
<script type='text/javascript'>focus(document.getElementById('name'));</script>
<input type="submit" value="<?php echo fun_adm_lang(85),'" />
';if(ADM_DB){echo"<input type='submit' name='drop' value='".fun_adm_lang(87)."'".fun_adm_confirm().">\n";}elseif(!$_POST["add_x"]&&$_GET["db"]==""){echo"<input type='image' class='icon' name='add' src='".fun_adm_incl('plus.gif')."' alt='+' title='".fun_adm_lang(96)."'>\n";}echo'<input type="hidden" name="token" value="',$T,'" />
</form>
';}elseif(isset($_GET['call'])){$da=$_GET["call"];fun_adm_page_header(fun_adm_lang(105).": ".fun_adm_h($da),$l);$gh=fun_adm_routine($da,(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Ed=array();$Wf=array();foreach($gh["fields"]as$r=>$m){if(substr($m["inout"],-3)=="OUT"){$Wf[$r]="@".fun_adm_idf_escape($m["field"])." AS ".fun_adm_idf_escape($m["field"]);}if(!$m["inout"]||substr($m["inout"],0,2)=="IN"){$Ed[]=$r;}}if(!$l&&$_POST){$Wa=array();foreach($gh["fields"]as$z=>$m){if(in_array($z,$Ed)){$X=fun_adm_process_input($m);if($X===false){$X="''";}if(isset($Wf[$z])){$f->query("SET @".fun_adm_idf_escape($m["field"])." = $X");}}$Wa[]=(isset($Wf[$z])?"@".fun_adm_idf_escape($m["field"]):$X);}$H=(isset($_GET["callf"])?"SELECT":"CALL")." ".fun_adm_idf_escape($da)."(".implode(", ",$Wa).")";echo"<p><code class='jush-$x'>".fun_adm_h($H)."</code> <a href='".fun_adm_h(ADM_ME)."sql=".urlencode($H)."'>".fun_adm_lang(48)."</a>\n";if(!$f->multi_query($H)){echo"<p class='error'>".fun_adm_error()."\n";}else{$g=fun_adm_connect();if(is_object($g)){$g->select_db(ADM_DB);}do{$I=$f->store_result();if(is_object($I)){fun_adm_select($I,$g);}else{echo"<p class='message'>".fun_adm_lang(106,$f->affected_rows)."\n";}}while($f->next_result());if($Wf){fun_adm_select($f->query("SELECT ".implode(", ",$Wf)));}}}echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post">
';if($Ed){echo"<table cellspacing='0'>\n";foreach($Ed as$z){$m=$gh["fields"][$z];$E=$m["field"];echo"<tr><th>".$b->fieldName($m);$Y=$_POST["fields"][$E];if($Y!=""){if($m["type"]=="enum"){$Y=+$Y;}if($m["type"]=="set"){$Y=array_sum($Y);}}fun_adm_input($m,$Y,(string)$_POST["function"][$E]);echo"\n";}echo"</table>\n";}echo'<p>
<input type="submit" value="',fun_adm_lang(105),'" />
<input type="hidden" name="token" value="',$T,'" />
</form>
';}elseif(isset($_GET['foreign'])){$a=$_GET["foreign"];$E=$_GET["name"];$K=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$D=($_POST["drop"]?fun_adm_lang(107):($E!=""?fun_adm_lang(108):fun_adm_lang(109)));$B=ADM_ME."table=".urlencode($a);if(!$_POST['drop']){$K["source"]=array_filter($K["source"],'strlen');ksort($K["source"]);$ui=array();foreach($K["source"]as$z=>$X){$ui[$z]=$K["target"][$z];}$K["target"]=$ui;}if($x=="sqlite"){fun_adm_queries_redirect($B,$D,fun_adm_recreate_table($a,$a,array(),array(),array(" $E"=>($_POST["drop"]?"":" ".fun_adm_format_foreign_key($K)))));}else{$c="ALTER TABLE ".fun_adm_table($a);$ec="\nDROP ".($x=="sql"?"FOREIGN KEY ":"CONSTRAINT ").fun_adm_idf_escape($E);if($_POST["drop"]){fun_adm_query_redirect($c.$ec,$B,$D);}else{fun_adm_query_redirect($c.($E!=""?"$ec,":"")."\nADD".fun_adm_format_foreign_key($K),$B,$D);$l=fun_adm_lang(110)."<br>$l";}}}fun_adm_page_header(fun_adm_lang(111),$l,array("table"=>$a),fun_adm_h($a));if($_POST){ksort($K["source"]);if($_POST["add"]){$K["source"][]="";}elseif($_POST["change"]||$_POST["change-js"]){$K["target"]=array();}}elseif($E!=""){$hd=fun_adm_foreign_keys($a);$K=$hd[$E];$K["source"][]="";}else{$K["table"]=$a;$K["source"]=array("");}$Nh=array_keys(fun_adm_fields($a));$ui=($a===$K["table"]?$Nh:array_keys(fun_adm_fields($K["table"])));$Rg=array_keys(array_filter(fun_adm_table_status('',true),'fun_adm_fk_support'));echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post">
<p>
';if($K["db"]==""&&$K["ns"]==""){echo fun_adm_lang(112),':
',fun_adm_html_select("table",$Rg,$K["table"],"this.form['change-js'].value = '1'; this.form.submit();"),'<input type="hidden" name="change-js" value="">
<noscript><p><input type="submit" name="change" value="',fun_adm_lang(113),'"></noscript>
<table cellspacing="0">
<thead><tr><th id="label-source">',fun_adm_lang(27),'<th id="label-target">',fun_adm_lang(28),'</thead>
';$w=0;foreach($K["source"]as$z=>$X){echo"<tr>","<td>".fun_adm_html_select("source[".(+$z)."]",array(-1=>"")+$Nh,$X,($w==fun_adm_count($K["source"])-1?"foreignAddRow(this);":1),"label-source"),"<td>".fun_adm_html_select("target[".(+$z)."]",$ui,$K["target"][$z],1,"label-target");$w++;}echo'</table>
<p>
',fun_adm_lang(29),': ',fun_adm_html_select("on_delete",array(-1=>"")+explode("|",$Cf),$K["on_delete"]),' ',fun_adm_lang(30),': ',fun_adm_html_select("on_update",array(-1=>"")+explode("|",$Cf),$K["on_update"]),fun_adm_doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-REFERENCES",'mssql'=>"ms174979.aspx",'oracle'=>"clauses002.htm#sthref2903",)),'<p>
<input type="submit" value="',fun_adm_lang(85),'">
<noscript><p><input type="submit" name="add" value="',fun_adm_lang(114),'"></noscript>
';}if($E!=""){echo'<input type="submit" name="drop" value="',fun_adm_lang(87),'"',fun_adm_confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
</form>
';}elseif(isset($_GET['view'])){$a=$_GET["view"];$K=$_POST;$Me=$_GET['materialized'];if($_POST&&!$l){$E=trim($K["name"]);$Da=" AS\n$K[select]";$B=ADM_ME."table=".urlencode($E);$D=fun_adm_lang(115);if($Me){$U="MATERIALIZED VIEW";}else{$U="VIEW";if($x=="pgsql"){$O=fun_adm_table_status($E);$U=($O?strtoupper($O["Engine"]):$U);}}if(!$_POST["drop"]&&$a==$E&&$x!="sqlite"&&$U!="MATERIALIZED VIEW"){fun_adm_query_redirect(($x=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".fun_adm_table($E).$Da,$B,$D);}else{$xi=$E."_Qadmin_".uniqid();fun_adm_drop_create("DROP $U ".fun_adm_table($a),"CREATE $U ".fun_adm_table($E).$Da,"DROP $U ".fun_adm_table($E),"CREATE $U ".fun_adm_table($xi).$Da,"DROP $U ".fun_adm_table($xi),($_POST["drop"]?substr(ADM_ME,0,-1):$B),fun_adm_lang(116),$D,fun_adm_lang(117),$a,$E);}}if(!$_POST&&$a!=""){$K=fun_adm_view($a);$K["name"]=$a;if(!$l){$l=fun_adm_error();}}$Ki=($Me?fun_adm_lang(118):fun_adm_lang(119));fun_adm_page_header(($a!=""?fun_adm_lang(120):$Ki),$l,array("table"=>$a),fun_adm_h($a));echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post">
<p>',fun_adm_lang(95),': <input name="name" value="',fun_adm_h($K["name"]),'" maxlength="64" autocapitalize="off" />
<p>';fun_adm_textarea("select",$K["select"]);echo'<p>
<input type="submit" value="',fun_adm_lang(85),'" />
';if($_GET["view"]!=""){echo'<input type="submit" name="drop" value="',fun_adm_lang(87),'"',fun_adm_confirm(),' />';}echo'<input type="hidden" name="token" value="',$T,'" />
</form>
';}elseif(isset($_GET['event'])){$aa=$_GET["event"];$Qd=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Wh=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$K=$_POST;if($_POST&&!$l){if($_POST["drop"]){fun_adm_query_redirect("DROP EVENT ".fun_adm_idf_escape($aa),substr(ADM_ME,0,-1),fun_adm_lang(121));}elseif(in_array($K["INTERVAL_FIELD"],$Qd)&&isset($Wh[$K["STATUS"]])){$sh="\nON SCHEDULE ".($K["INTERVAL_VALUE"]?"EVERY ".fun_adm_q($K["INTERVAL_VALUE"])." $K[INTERVAL_FIELD]".($K["STARTS"]?" STARTS ".fun_adm_q($K["STARTS"]):"").($K["ENDS"]?" ENDS ".fun_adm_q($K["ENDS"]):""):"AT ".fun_adm_q($K["STARTS"]))." ON COMPLETION".($K["ON_COMPLETION"]?"":" NOT")." PRESERVE";fun_adm_queries_redirect(substr(ADM_ME,0,-1),($aa!=""?fun_adm_lang(122):fun_adm_lang(123)),fun_adm_queries(($aa!=""?"ALTER EVENT ".fun_adm_idf_escape($aa).$sh.($aa!=$K["EVENT_NAME"]?"\nRENAME TO ".fun_adm_idf_escape($K["EVENT_NAME"]):""):"CREATE EVENT ".fun_adm_idf_escape($K["EVENT_NAME"]).$sh)."\n".$Wh[$K["STATUS"]]." COMMENT ".fun_adm_q($K["EVENT_COMMENT"]).rtrim(" DO\n$K[EVENT_DEFINITION]",";").";"));}}fun_adm_page_header(($aa!=""?fun_adm_lang(124).": ".fun_adm_h($aa):fun_adm_lang(125)),$l);if(!$K&&$aa!=""){$L=fun_adm_get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".fun_adm_q(ADM_DB)." AND EVENT_NAME = ".fun_adm_q($aa));$K=reset($L);}echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post">
<table cellspacing="0">
<tr><th>',fun_adm_lang(95),'<td><input name="EVENT_NAME" value="',fun_adm_h($K["EVENT_NAME"]),'" maxlength="64" autocapitalize="off" />
<tr><th title="datetime">',fun_adm_lang(126),'<td><input name="STARTS" value="',fun_adm_h("{$K['EXECUTE_AT']}{$K['STARTS']}"),'" />
<tr><th title="datetime">',fun_adm_lang(127),'<td><input name="ENDS" value="',fun_adm_h($K["ENDS"]),'" />
<tr><th>',fun_adm_lang(128),'<td><input type="number" name="INTERVAL_VALUE" value="',fun_adm_h($K["INTERVAL_VALUE"]),'" class="size" /> ',fun_adm_html_select("INTERVAL_FIELD",$Qd,$K["INTERVAL_FIELD"]),'<tr><th>',fun_adm_lang(23),'<td>',fun_adm_html_select("STATUS",$Wh,$K["STATUS"]),'<tr><th>',fun_adm_lang(18),'<td><input name="EVENT_COMMENT" value="',fun_adm_h($K["EVENT_COMMENT"]),'" maxlength="64" />
<tr><th><td>',fun_adm_checkbox("ON_COMPLETION","PRESERVE",$K["ON_COMPLETION"]=="PRESERVE",fun_adm_lang(129)),'</table>
<p>';fun_adm_textarea("EVENT_DEFINITION",$K["EVENT_DEFINITION"]);echo'<p>
<input type="submit" value="',fun_adm_lang(85),'" />
';if($aa!=""){echo'<input type="submit" name="drop" value="',fun_adm_lang(87),'"',fun_adm_confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'" />
</form>
';}elseif(isset($_GET['procedure'])){$da=$_GET["procedure"];$gh=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$K=$_POST;$K["fields"]=(array)$K["fields"];if($_POST&&!fun_adm_process_fields($K["fields"])&&!$l){$xi="$K[name]_qadmin_".uniqid();fun_adm_drop_create("DROP $gh ".fun_adm_idf_escape($da),fun_adm_create_routine($gh,$K),"DROP $gh ".fun_adm_idf_escape($K["name"]),fun_adm_create_routine($gh,array("name"=>$xi)+$K),"DROP $gh ".fun_adm_idf_escape($xi),substr(ADM_ME,0,-1),fun_adm_lang(130),fun_adm_lang(131),fun_adm_lang(132),$da,$K["name"]);}fun_adm_page_header(($da!=""?(isset($_GET["function"])?fun_adm_lang(133):fun_adm_lang(134)).": ".fun_adm_h($da):(isset($_GET["function"])?fun_adm_lang(135):fun_adm_lang(136))),$l);if(!$_POST&&$da!=""){$K=fun_adm_routine($da,$gh);$K["name"]=$da;}$kb=fun_adm_get_vals("SHOW CHARACTER SET");sort($kb);$hh=fun_adm_routine_languages();echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post" id="form">
<p>',fun_adm_lang(95),': <input name="name" value="',fun_adm_h($K["name"]),'" maxlength="64" autocapitalize="off">
',($hh?fun_adm_lang(137).": ".fun_adm_html_select("language",$hh,$K["language"]):""),'<input type="submit" value="',fun_adm_lang(85),'">
<table cellspacing="0" class="nowrap">
';fun_adm_edit_fields($K["fields"],$kb,$gh);if(isset($_GET["function"])){echo"<tr><td>".fun_adm_lang(138);fun_adm_edit_type("returns",$K["returns"],$kb);}echo'</table>
<p>';fun_adm_textarea("definition",$K["definition"]);echo'<p>
<input type="submit" value="',fun_adm_lang(85),'">
';if($da!=""){echo'<input type="submit" name="drop" value="',fun_adm_lang(87),'"',fun_adm_confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
</form>
';}elseif(isset($_GET['sequence'])){$fa=$_GET['sequence'];$K=$_POST;if($_POST&&!$l){$A=substr(ADM_ME,0,-1);$E=trim($K["name"]);if($_POST["drop"]){fun_adm_query_redirect("DROP SEQUENCE ".fun_adm_idf_escape($fa),$A,fun_adm_lang(139));}elseif($fa==""){fun_adm_query_redirect("CREATE SEQUENCE ".fun_adm_idf_escape($E),$A,fun_adm_lang(140));}elseif($fa!=$E){fun_adm_query_redirect("ALTER SEQUENCE ".fun_adm_idf_escape($fa)." RENAME TO ".fun_adm_idf_escape($E),$A,fun_adm_lang(141));}else{fun_adm_redirect($A);}}fun_adm_page_header($fa!=""?fun_adm_lang(142).": ".fun_adm_h($fa):fun_adm_lang(143),$l);if(!$K){$K["name"]=$fa;}echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post">
<p><input name="name" value="',fun_adm_h($K["name"]),'" autocapitalize="off" />
<input type="submit" value="',fun_adm_lang(85),'" />
';if($fa!=''){echo"<input type='submit' name='drop' value='".fun_adm_lang(87)."'".fun_adm_confirm()." />\n";}echo'<input type="hidden" name="token" value="',$T,'" />
</form>
';}elseif(isset($_GET['type'])){$ga=$_GET["type"];$K=$_POST;if($_POST&&!$l){$A=substr(ADM_ME,0,-1);if($_POST["drop"]){fun_adm_query_redirect("DROP TYPE ".fun_adm_idf_escape($ga),$A,fun_adm_lang(144));}else{fun_adm_query_redirect("CREATE TYPE ".fun_adm_idf_escape(trim($K["name"]))." $K[as]",$A,fun_adm_lang(145));}}fun_adm_page_header($ga!=""?fun_adm_lang(146).": ".fun_adm_h($ga):fun_adm_lang(147),$l);if(!$K){$K["as"]="AS ";}echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post">
<p>
';if($ga!=""){echo"<input type='submit' name='drop' value='".fun_adm_lang(87)."'".fun_adm_confirm().">\n";}else{echo"<input name='name' value='".fun_adm_h($K['name'])."' autocapitalize='off'>\n";fun_adm_textarea("as",$K["as"]);echo"<p><input type='submit' value='".fun_adm_lang(85)."'>\n";}echo'<input type="hidden" name="token" value="',$T,'" />
</form>
';}elseif(isset($_GET['trigger'])){$a=$_GET["trigger"];$E=$_GET["name"];$Zi=fun_adm_trigger_options();$K=(array)fun_adm_trigger($E)+array("Trigger"=>$a."_bi");if($_POST){if(!$l&&in_array($_POST["Timing"],$Zi["Timing"])&&in_array($_POST["Event"],$Zi["Event"])&&in_array($_POST["Type"],$Zi["Type"])){$Bf=" ON ".fun_adm_table($a);$ec="DROP TRIGGER ".fun_adm_idf_escape($E).($x=="pgsql"?$Bf:"");$B=ADM_ME."table=".urlencode($a);if($_POST["drop"]){fun_adm_query_redirect($ec,$B,fun_adm_lang(148));}else{if($E!=""){fun_adm_queries($ec);}fun_adm_queries_redirect($B,($E!=""?fun_adm_lang(149):fun_adm_lang(150)),fun_adm_queries(fun_adm_create_trigger($Bf,$_POST)));if($E!=""){fun_adm_queries(fun_adm_create_trigger($Bf,$K+array("Type"=>reset($Zi["Type"]))));}}}$K=$_POST;}fun_adm_page_header(($E!=""?fun_adm_lang(151).": ".fun_adm_h($E):fun_adm_lang(152)),$l,array("table"=>$a));echo'
<form action="" method="post" enctype="application/x-www-form-urlencoded" id="form">
<table cellspacing="0">
<tr><th>',fun_adm_lang(153),'<td>',fun_adm_html_select("Timing",$Zi["Timing"],$K["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".fun_adm_js_escape($a)."', this.form);"),'<tr><th>',fun_adm_lang(154),'<td>',fun_adm_html_select("Event",$Zi["Event"],$K["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$Zi["Event"])?" <input name='Of' value='".fun_adm_h($K["Of"])."' class='hidden'>":""),'<tr><th>',fun_adm_lang(20),'<td>',fun_adm_html_select("Type",$Zi["Type"],$K["Type"]),'</table>
<p>',fun_adm_lang(95),': <input name="Trigger" value="',fun_adm_h($K["Trigger"]);?>" maxlength="64" autocapitalize="off" />
<script type="text/javascript">document.getElementById('form')['Timing'].onchange();</script>
<p><?php fun_adm_textarea("Statement",$K["Statement"]);echo'<p>
<input type="submit" value="',fun_adm_lang(85),'" />
';if($E!=""){echo'<input type="submit" name="drop" value="',fun_adm_lang(87),'"',fun_adm_confirm(),' />';}echo'<input type="hidden" name="token" value="',$T,'" />
</form>
';}elseif(isset($_GET['user'])){$ha=$_GET['user'];$xg=array(""=>array("All privileges"=>""));foreach(fun_adm_get_rows("SHOW PRIVILEGES")as$K){foreach(explode(",",($K["Privilege"]=="Grant option"?"":$K["Context"]))as$xb){$xg[$xb][$K["Privilege"]]=$K["Comment"];}}$xg["Server Admin"]+=$xg["File access on server"];$xg["Databases"]["Create routine"]=$xg["Procedures"]["Create routine"];unset($xg["Procedures"]["Create routine"]);$xg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X){$xg["Columns"][$X]=$xg["Tables"][$X];}unset($xg["Server Admin"]["Usage"]);foreach($xg["Tables"]as$z=>$X){unset($xg["Databases"][$z]);}$if=array();if($_POST){foreach($_POST["objects"]as$z=>$X){$X==='.*'&&$X='*.*';$if[$X]=(array)$if[$X]+(array)$_POST["grants"][$z];}}$rd=array();$_f='';if(isset($_GET["host"])&&($I=$f->query("SHOW GRANTS FOR ".fun_adm_q($ha)."@".fun_adm_q($_GET["host"])))){while($K=$I->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$K[0],$C)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$C[1],$Ke,PREG_SET_ORDER)){foreach($Ke as$X){if($X[1]!="USAGE"){$rd["$C[2]$X[2]"][$X[1]]=true;}if(preg_match('~ WITH GRANT OPTION~',$K[0])){$rd["$C[2]$X[2]"]["GRANT OPTION"]=true;}}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$K[0],$C)){}}}if($_POST&&!$l){$Af=(isset($_GET["host"])?fun_adm_q($ha)."@".fun_adm_q($_GET["host"]):"''");if($_POST["drop"]){fun_adm_query_redirect("DROP USER $Af",ADM_ME."privileges=",fun_adm_lang(155));}else{$kf=fun_adm_q($_POST["user"])."@".fun_adm_q($_POST["host"]);$gg=trim($_POST['pass']);$Db=false;if(!$l){if($Af!=$kf){$Db=fun_adm_queries("CREATE USER $kf IDENTIFIED BY ".fun_adm_q($gg));$l=!$Db;fun_adm_queries('flush privileges');}elseif($gg!==$_f){fun_adm_queries("GRANT USAGE ON *.* TO {$kf} IDENTIFIED BY ".fun_adm_q($gg));}}if(!$l){$ch=array();foreach($if as$uf=>$qd){if(isset($_GET["grant"])){$qd=array_filter($qd);}$qd=array_keys($qd);if(isset($_GET["grant"])){$ch=array_diff(array_keys(array_filter($if[$uf],'strlen')),$qd);}elseif($Af==$kf){$yf=array_keys((array)$rd[$uf]);$ch=array_diff($yf,$qd);$qd=array_diff($qd,$yf);unset($rd[$uf]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$uf,$C)&&(!fun_adm_grant("REVOKE",$ch,$C[2]," ON $C[1] FROM $kf")||!fun_adm_grant("GRANT",$qd,$C[2]," ON $C[1] TO $kf"))){$l=true;break;}}}if(!$l&&isset($_GET["host"])){if($Af!=$kf){fun_adm_queries("DROP USER $Af");}elseif(!isset($_GET["grant"])){foreach($rd as$uf=>$ch){if(preg_match('~^(.+)(\(.*\))?$~U',$uf,$C)){fun_adm_grant("REVOKE",array_keys($ch),$C[2]," ON $C[1] FROM $kf");}}}}fun_adm_queries_redirect(ADM_ME."privileges=",(isset($_GET["host"])?fun_adm_lang(156):fun_adm_lang(157)),!$l);if($Db){$f->query("DROP USER $kf");}}}fun_adm_page_header((isset($_GET["host"])?fun_adm_lang(0).": ".fun_adm_h("$ha@$_GET[host]"):fun_adm_lang(49)),$l,array("privileges"=>array('',fun_adm_lang(46))));if($_POST){$K=$_POST;$rd=$if;}else{$K=$_GET+array("host"=>$f->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$K["pass"]=$_f;if($_f!=''){$K["hashed"]=true;}$rd[(ADM_DB==''||$rd?'':fun_adm_idf_escape(addcslashes(ADM_DB,"%_\\"))).".*"]=array();}echo'<form action="" enctype="application/x-www-form-urlencoded" method="post">
<table cellspacing="0">
<tr><th>',fun_adm_lang(47),'<td><input name="host" maxlength="60" value="',fun_adm_h($K["host"]),'" autocapitalize="off" />
<tr><th>',fun_adm_lang(0),'<td><input name="user" maxlength="16" value="',fun_adm_h($K["user"]),'" autocapitalize="off" />
<tr><th>',fun_adm_lang(1),'<td><input name="pass" id="pass" value="',fun_adm_h($K["pass"]),'" />
</table>

';echo"<table cellspacing='0'>\n","<thead><tr><th colspan='2'>".fun_adm_lang(46).fun_adm_doc_link(array('sql'=>"grant.html#priv_level"));$r=0;foreach($rd as$uf=>$qd){echo'<th>'.($uf!="*.*"?"<input name='objects[$r]' value='".fun_adm_h($uf)."' size='10' autocapitalize='off'>":"<input type='hidden' name='objects[$r]' value='*.*' size='10'>*.*");$r++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>fun_adm_lang(47),"Databases"=>fun_adm_lang(40),"Tables"=>fun_adm_lang(17),"Columns"=>fun_adm_lang(19),"Procedures"=>fun_adm_lang(158),)as$xb=>$Xb){foreach((array)$xg[$xb]as$wg=>$pb){echo"<tr".fun_adm_odd()."><td".($Xb?">$Xb<td":" colspan='2'").' lang="en" title="'.fun_adm_h($pb).'">'.fun_adm_h($wg);$r=0;foreach($rd as$uf=>$qd){$E="'grants[$r][".fun_adm_h(strtoupper($wg))."]'";$Y=$qd[strtoupper($wg)];if($xb=="Server Admin"&&$uf!=(isset($rd["*.*"])?"*.*":".*")){echo"<td>";}elseif(isset($_GET["grant"])){echo"<td><select name=$E><option><option value='1'".($Y?" selected":"").">".fun_adm_lang(159)."<option value='0'".($Y=="0"?" selected":"").">".fun_adm_lang(160)."</select>";}else{echo"<td align='center'><label class='block'><input type='checkbox' name=$E value='1'".($Y?" checked":"").($wg=="All privileges"?" id='grants-$r-all'":($wg=="Grant option"?"":" onclick=\"if (this.checked) formUncheck('grants-$r-all');\""))."></label>";}$r++;}}}echo"</table>\n",'<p>
<input type="submit" value="',fun_adm_lang(85),'" />
<input type="submit" class="adm_refresh" value="',fun_adm_lang(86),'" />
';if(isset($_GET["host"])){echo'<input type="submit" name="drop" value="',fun_adm_lang(87),'"',fun_adm_confirm(),' />';}echo'<input type="hidden" name="token" value="',$T,'" />
</form>
';}elseif(isset($_GET['processlist'])){if(fun_adm_support("kill")&&$_POST&&!$l){$ge=0;foreach((array)$_POST["kill"]as$X){if(fun_adm_kill_process($X)){$ge++;}}fun_adm_queries_redirect(ADM_ME."processlist=",fun_adm_lang(161,$ge),$ge||!$_POST["kill"]);}fun_adm_page_header(fun_adm_lang(162),$l);$b->homepage('def');echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post">
<table cellspacing="0" onclick="tableClick(event);" ondblclick="tableClick(event, true);" class="nowrap checkable">

';$r=-1;foreach(fun_adm_process_list()as$r=>$K){if(!$r){echo"<thead><tr lang='en'>".(fun_adm_support("kill")?"<th>":"");foreach($K as$z=>$X){echo"<th>$z</th>";}echo"</thead>\n";}echo"<tr".fun_adm_odd().">".(fun_adm_support("kill")?"<td>".fun_adm_checkbox("kill[]",$K['Id'],0):"");foreach($K as$z=>$X){echo"<td>".(($x=="sql"&&$z=="Info"&&preg_match("~Query|Killed~",$K["Command"])&&$X!="")||($x=="pgsql"&&$z=="current_query"&&$X!="<IDLE>")||($x=="oracle"&&$z=="sql_text"&&$X!="")?"<code class='jush-$x'>".fun_adm_shorten_utf8($X,100,"</code>").' <a href="'.fun_adm_h(ADM_ME.($K["db"]!=""?"db=".urlencode($K["db"])."&":"")."sql=".urlencode($X)).'">'.fun_adm_lang(163).'</a>':fun_adm_nbsp($X)).'</td>';}echo"</tr>\n";}echo'
</table>
<script type=\'text/javascript\'>tableCheck();</script>
<p>
';if(fun_adm_support("kill")){echo($r+1)."/".fun_adm_lang(164,fun_adm_max_connections()),"<p><input type='submit' value='".fun_adm_lang(165)."'>\n",'<input type="submit" class="adm_refresh" value="'.fun_adm_lang(86).'" /> </p>';}echo'<input type="hidden" name="token" value="',$T,'" />
</form>';}elseif(isset($_GET['select'])){$a=$_GET['select'];$R=fun_adm_table_status1($a);$v=fun_adm_indexes($a);$n=fun_adm_fields($a);$hd=fun_adm_column_foreign_keys($a);$xf='';if($R['Oid']){$xf=($x=='sqlite'?'rowid':'oid');$v[]=array('type'=>'PRIMARY','columns'=>array($xf));}parse_str(fun_adm_get_session('qadmin_import'),$ta);$dh=array();$e=array();$_i=null;foreach($n as$z=>$m){$E=$b->fieldName($m);if(isset($m["privileges"]["select"])&&$E!=""){$e[$z]=html_entity_decode(strip_tags($E),ENT_QUOTES);if(fun_adm_is_shortable($m)){$_i=$b->selectLengthProcess();}}$dh+=$m['privileges'];}list($M,$sd)=$b->selectColumnsProcess($e,$v);$Sd=fun_adm_count($sd)<fun_adm_count($M);$Z=$b->selectSearchProcess($n,$v);$Nf=$b->selectOrderProcess($n,$v);$_=$b->selectLimitProcess();$md=($M?implode(", ",$M):"*".($xf?", $xf":"")).fun_adm_convert_fields($e,$n,$M)."\nFROM ".fun_adm_table($a);$td=($sd&&$Sd?"\nGROUP BY ".implode(", ",$sd):"").($Nf?"\nORDER BY ".implode(", ",$Nf):"");if($_GET['val']&&fun_adm_is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$hj=>$K){$Da=fun_adm_convert_field($n[key($K)]);$M=array($Da?$Da:fun_adm_idf_escape(key($K)));$Z[]=fun_adm_where_check($hj,$n);$J=$dc->select($a,$M,$Z,$M);if($J){$Pg=$J->fetch_row();echo reset($Pg);}}exit;}if($_POST&&!$l){$Ij=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$db=array();foreach($_POST["check"]as$ab){$db[]=fun_adm_where_check($ab,$n);}$Ij[]="((".implode(") OR (",$db)."))";}$Ij=($Ij?"\nWHERE ".implode(" AND ",$Ij):"");$tg=$jj=null;foreach($v as$u){if($u["type"]=="PRIMARY"){$tg=array_flip($u["columns"]);$jj=($M?$tg:array());break;}}foreach((array)$jj as$z=>$X){if(in_array(fun_adm_idf_escape($z),$M)){unset($jj[$z]);}}if($_POST['export']){fun_adm_set_session('qadmin_import',"output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));fun_adm_dump_headers($a);if($_POST['output']==='text'&&$_POST['format']==='sql'){echo"-- Qadmin $ia ".$_SERVER['STYPE'][ADM_DRIVER]." Print\n\n";if($x=="sql"){echo"SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';

";$f->query("SET time_zone = '+00:00';");}}$b->dumpTable($a,'');if(!is_array($_POST["check"])||$tg){$H="SELECT $md$Ij$td";}else{$fj=array();foreach($_POST["check"]as$X){$fj[]="(SELECT".fun_adm_limit($md,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").fun_adm_where_check($X,$n).$td,1).")";}$H=implode(" UNION ALL ",$fj);}$b->dumpData($a,"table",$H);exit();}if(!$b->selectEmailProcess($Z,$hd)){if($_POST["save"]||$_POST["delete"]){$I=true;$ua=0;$N=array();if(!$_POST["delete"]){foreach($e as$E=>$X){$X=fun_adm_process_input($n[$E]);if($X!==null&&($_POST["clone"]||$X!==false)){$N[fun_adm_idf_escape($E)]=($X!==false?$X:fun_adm_idf_escape($E));}}}if($_POST["delete"]||$N){if($_POST["clone"]){$H="INTO ".fun_adm_table($a)." (".implode(", ",array_keys($N)).")\nSELECT ".implode(", ",$N)."\nFROM ".fun_adm_table($a);}if($_POST["all"]||($tg&&is_array($_POST["check"]))||$Sd){$I=($_POST["delete"]?$dc->delete($a,$Ij):($_POST["clone"]?fun_adm_queries("INSERT $H$Ij"):$dc->update($a,$N,$Ij)));$ua=$f->affected_rows;}else{foreach((array)$_POST["check"]as$X){$Hj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").fun_adm_where_check($X,$n);$I=($_POST["delete"]?$dc->delete($a,$Hj,1):($_POST["clone"]?fun_adm_queries("INSERT".fun_adm_limit1($H,$Hj)):$dc->update($a,$N,$Hj)));if(!$I){break;}$ua+=$f->affected_rows;}}}$D=fun_adm_lang(166,$ua);if($_POST["clone"]&&$I&&$ua==1){$oe=fun_adm_last_id();if($oe){$D=fun_adm_lang(75," $oe");}}fun_adm_queries_redirect(fun_adm_remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$D,$I);if(!$_POST["delete"]){fun_adm_edit_form($a,$n,(array)$_POST["fields"],!$_POST["clone"]);fun_adm_page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"]){$l=fun_adm_lang(167);}else{$I=true;$ua=0;foreach($_POST["val"]as$hj=>$K){$N=array();foreach($K as$z=>$X){$z=fun_adm_bracket_escape($z,1);$N[fun_adm_idf_escape($z)]=(preg_match('~char|text~',$n[$z]["type"])||$X!=""?$b->processInput($n[$z],$X):"NULL");}$I=$dc->update($a,$N," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").fun_adm_where_check($hj,$n),!($Sd||$tg)," ");if(!$I){break;}$ua+=$f->affected_rows;}fun_adm_queries_redirect(fun_adm_remove_from_uri(),fun_adm_lang(166,$ua),$I);}}elseif(!is_string($o=fun_adm_get_file("csv_file",true))){$l=fun_adm_upload_error($o);}elseif(!preg_match('~~u',$o)){$l=fun_adm_lang(168);}else{fun_adm_set_session('qadmin_import',"output=".urlencode($ta["output"])."&format=".urlencode($_POST['separator']));$I=true;$mb=array_keys($n);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$o,$Ke);$ua=fun_adm_count($Ke[0]);$dc->begin();$Ah=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$L=array();foreach($Ke[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$Ah]*)$Ah~",$X.$Ah,$Le);if(!$z&&!array_diff($Le[1],$mb)){$mb=$Le[1];$ua--;}else{$N=array();foreach($Le[1]as$r=>$hb){$N[fun_adm_idf_escape($mb[$r])]=($hb==""&&$n[$mb[$r]]["null"]?"NULL":fun_adm_q(str_replace('""','"',preg_replace('~^"|"$~','',$hb))));}$L[]=$N;}}$I=(!$L||$dc->insertUpdate($a,$L,$tg));if($I){$dc->commit();}fun_adm_queries_redirect(fun_adm_remove_from_uri("page"),fun_adm_lang(169,$ua),$I);$dc->rollback();}}}$ki=$b->tableName($R);if(fun_adm_is_ajax()){fun_adm_page_headers();ob_start();}else{fun_adm_page_header($ki,$l);}$N=null;if(isset($dh["insert"])||!fun_adm_support("table")){$N="";foreach((array)$_GET["where"]as$X){if(fun_adm_count($hd[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"])))){$N.="&set".urlencode("[".fun_adm_bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}}$b->selectLinks($R,$N);if(!$e&&fun_adm_support("table")){echo"<p class='error'>".fun_adm_lang(170).($n?".":": ".fun_adm_error())."\n";}else{echo"<form action='' enctype=\"application/x-www-form-urlencoded\" id='form'>\n","<div style='display: none;'>";fun_adm_hidden_fields_get();echo(ADM_DB!=""?'<input type="hidden" name="db" value="'.fun_adm_h(ADM_DB).'">'.(isset($_GET['ns'])?'<input type="hidden" name="ns" value="'.fun_adm_h($_GET['ns']).'">':""):"");echo'<input type="hidden" name="select" value="'.fun_adm_h($a).'">',"</div>\n";$b->selectColumnsPrint($M,$e);$b->selectSearchPrint($Z,$e,$v);$b->selectOrderPrint($Nf,$e,$v);$b->selectLimitPrint($_);$b->selectLengthPrint($_i);$b->selectActionPrint($v);echo"</form>\n";$G=$_GET['page'];if($G=="last"){$kd=$f->result(fun_adm_count_rows($a,$Z,$Sd,$sd));$G=floor(max(0,$kd-1)/$_);}$yh=$M;if(!$yh){$yh[]="*";if($xf){$yh[]=$xf;}}$_b=fun_adm_convert_fields($e,$n,$M);if($_b){$yh[]=substr($_b,2);}$I=$dc->select($a,$yh,$Z,$sd,$Nf,$_,$G,true);if(!$I){echo"<p class='error'>".fun_adm_error()."\n";}else{if($x=="mssql"&&$G){$I->seek($_*$G);}$rc=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$L=array();while($K=$I->fetch_assoc()){if($G&&$x=="oracle"){unset($K["RNUM"]);}$L[]=$K;}if($_GET["page"]!="last"&&$_!=""&&$sd&&$Sd&&$x=="sql"){$kd=$f->result(" SELECT FOUND_ROWS()");}$La=$b->backwardKeys($a,$ki);echo'<p id="adm_hide" class="pages"></p>',"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$sd&&$M?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);' class='jsonly'> <a href='".fun_adm_h($_GET["modify"]?fun_adm_remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".fun_adm_lang(171)."</a>");$gf=array();$od=array();reset($M);$Ng=1;if(!$L){$e=$n;}else{$e=$L[0];}foreach($e as$z=>$X){if($z!=$xf){$X=$_GET["columns"][key($M)];$m=$n[$M?($X?$X["col"]:current($M)):$z];$E=($m?$b->fieldName($m,$Ng):($X["fun"]?"*":$z));if($E!=""){$Ng++;$gf[$z]=$E;$d=fun_adm_idf_escape($z);$Ad=fun_adm_remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($z);$Xb="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.fun_adm_h($Ad.($Nf[0]==$d||$Nf[0]==$z||(!$Nf&&$Sd&&$sd[0]==$d)?$Xb:'')).'">';echo fun_adm_apply_sql_function($X["fun"],$E)."</a>";echo"<span class='column hidden'>";if(!$X['fun']){echo'<a href="#fieldset-search" onclick="selectSearch(\''.fun_adm_h(fun_adm_js_escape($z)).'\'); return false;" title="'.fun_adm_lang(172).'" class="text jsonly"> =</a>';}echo"</span>";}$od[$z]=$X["fun"];next($M);}}$ve=array();if($_GET['modify']){foreach($L as$K){foreach($K as$z=>$X){$ve[$z]=max($ve[$z],min(40,strlen(utf8_decode($X))));}}}echo($La?"<th>".fun_adm_lang(173):"")."</thead>\n";if(fun_adm_is_ajax()){if($_%2==1&&$G%2==1){fun_adm_odd();}ob_end_clean();}if(!$L){$Ph=fun_adm_count($n)+1;echo'<tr><td style="text-align: center;" colspan="'.$Ph.'">'.fun_adm_lang(174).'</td></tr>';}foreach($b->rowDescriptions($L,$hd)as$ff=>$K){$gj=fun_adm_unique_array($L[$ff],$v);if(!$gj){$gj=array();foreach($L[$ff]as$z=>$X){if(!preg_match('~^(COUNT\((\*|(DISTINCT )?`(?:[^`]|``)+`)\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\(`(?:[^`]|``)+`\))$~',$z)){$gj[$z]=$X;}}}$hj="";foreach($gj as$z=>$X){if(($x=="sql"||$x=="pgsql")&&strlen($X)>64){$z=(strpos($z,'(')?$z:fun_adm_idf_escape($z));$z="MD5(".($x=='sql'&&preg_match("~^utf8_~",$n[$z]["collation"])?$z:"CONVERT($z USING ".fun_adm_charset($f).")").")";$X=md5($X);}$hj.="&".($X!==null?urlencode("where[".fun_adm_bracket_escape($z)."]")."=".urlencode($X):"null%5B%5D=".urlencode($z));}echo"<tr".fun_adm_odd().">".(!$sd&&$M?"":"<td>".fun_adm_checkbox("check[]",substr($hj,1),in_array(substr($hj,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").($Sd||fun_adm_information_schema(ADM_DB)?"":" <a href='".fun_adm_h(ADM_ME."edit=".urlencode($a).$hj)."'>".fun_adm_lang(175)."</a>"));foreach($K as$z=>$X){$zj=mb_strlen($X);$gi=$X;if(isset($gf[$z])){$m=$n[$z];if($X!=""&&(!isset($rc[$z])||$rc[$z]!="")){$rc[$z]=(fun_adm_is_mail($X)?$gf[$z]:"");}$A="";if(preg_match('~blob|bytea|raw|file~',$m["type"])&&$X!=""){$A=ADM_ME.'download='.urlencode($a).'&field='.urlencode($z).$hj;}if(!$A&&$X!==null){foreach((array)$hd[$z]as$p){if(fun_adm_count($hd[$z])==1||end($p["source"])==$z){$A="";foreach($p["source"]as$r=>$Nh){$A.=fun_adm_where_link($r,$p["target"][$r],$L[$ff][$Nh]);}$A=($p["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($p["db"]),ADM_ME):ADM_ME).'select='.urlencode($p["table"]).$A;if(fun_adm_count($p["source"])==1){break;}}}}if($z=="COUNT(*)"){$A=ADM_ME."select=".urlencode($a);$r=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$gj)){$A.=fun_adm_where_link($r++,$W["col"],$W["val"],$W["op"]);}}foreach($gj as$y=>$W){$A.=fun_adm_where_link($r++,$y,$W);}}$X=fun_adm_select_value($X,$A,$m,$_i);$s=fun_adm_h("val[$hj][".fun_adm_bracket_escape($z)."]");$Y=$_POST["val"][$hj][fun_adm_bracket_escape($z)];$nc=!is_array($K[$z])&&fun_adm_is_utf8($X)&&$L[$ff][$z]==$K[$z]&&!$od[$z];$zi=preg_match('~text|lob~',$m["type"]);if(($_GET["modify"]&&$nc)||$Y!==null){$vd=fun_adm_h($Y!==null?$Y:$K[$z]);echo"<td>".($zi?"<textarea name='$s' cols='30' rows='".(substr_count($K[$z],"\n")+1)."'>$vd</textarea>":"<input name='$s' value='$vd' size='$ve[$z]'>");}else{$Fe=strpos($X,"<i>...</i>");if(is_numeric($X)&&strlen($X)===10){$vi="[$z]".ADM_LANG."Date: \r\n".$X."\r\n".fun_adm_gmdate($X);}else{$vi="[$z]-Size:($zj):\r\n".htmlspecialchars($gi);}echo"<td title=\"{$vi}\" id='$s' onclick=\"selectClick(this, event, ".($Fe?2:($zi?1:0)).($nc?"":", '".fun_adm_h(fun_adm_lang(176))."'").");\">$X";}}}if($La){echo"<td>";}$b->backwardKeysPrint($La,$L[$ff]);echo"</tr>\n";}if(fun_adm_is_ajax()){exit();}echo"</table>\n";if(($L||$G)&&!fun_adm_is_ajax()){$Ec=true;if($_GET["page"]!="last"){if($_==""){$kd=fun_adm_count($L);}elseif($x!="sql"||!$Sd){$kd=($Sd?false:fun_adm_found_rows($R,$Z));if($kd<max(1e4,2*($G+1)*$_)){$Bd=fun_adm_slow_query(fun_adm_count_rows($a,$Z,$Sd,$sd));$kd=reset($Bd);}else{$Ec=false;}}}if($_!=""&&($kd===false||$kd>$_||$G)){echo"<p id=\"adm_pages\" class=\"pages\">";$Pe=($kd===false?$G+(fun_adm_count($L)>=$_?2:1):floor(($kd-1)/$_));if($x!=='simpledb'){echo'<a href="'.fun_adm_h(fun_adm_remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".fun_adm_lang(177)."', '".($G+1)."'), event); return false;\">".fun_adm_lang(177)."</a>:",fun_adm_pagination(0,$G).($G>5?'':'');for($r=max(1,$G-4);$r<min($Pe,$G+5);$r++){echo fun_adm_pagination($r,$G);}if($Pe>0){echo($G+5<$Pe?'..':''),($Ec&&$kd!==false?fun_adm_pagination($Pe,$G):" <a href='".fun_adm_h(fun_adm_remove_from_uri("page")."&page=last")."' title='~$Pe'>".fun_adm_lang(178)."</a>");}echo(($kd===false?fun_adm_count($L)+1:$kd-$G*$_)>$_?' <a href="'.fun_adm_h(fun_adm_remove_from_uri("page")."&page=".($G+1)).'" onclick="return !selectLoadMore(this, '.(+$_).', \''.fun_adm_lang(179).'...\');" class="loadmore">'.fun_adm_lang(180).'</a>':'');}else{echo fun_adm_lang(177).":",fun_adm_pagination(0,$G).($G>1?" ...":""),($G?fun_adm_pagination($G,$G):""),($Pe>$G?fun_adm_pagination($G+1,$G).($Pe>$G+1?" ...":""):"");}echo'</p>';}echo"<p class='count' title=\"{$kd}\">\n",($kd!==false?"(".($Ec?"":"~ ").fun_adm_lang(55,$kd).") ":"");$bc=($Ec?"":"~ ").$kd;echo fun_adm_checkbox("all",1,0,fun_adm_lang(181),"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$bc' : checked); selectCount('selected2', this.checked || !checked ? '$bc' : checked);")."\n",'</p>';if($b->selectCommandPrint()){echo'<fieldset',($_GET['modify']?'':' class="jsonly"'),'><legend>',fun_adm_lang(171),'</legend>
<div>
<input type="button" class="adm_refresh" value="',fun_adm_lang(86),'" />
<input type="submit" value="',fun_adm_lang(85),'"',($_GET["modify"]?'':' title="'.fun_adm_lang(167).'"'),' />
</div></fieldset>
<fieldset><legend>',fun_adm_lang(182),' <span id="selected"></span></legend><div>
<input type="submit" name="edit" value="',fun_adm_lang(48),'" />
<input type="submit" name="clone" value="',fun_adm_lang(163),'" />
<input type="submit" name="delete" value="',fun_adm_lang(183),'"',fun_adm_confirm(),' />
</div></fieldset>
';}$id=$b->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($id['sql']);break;}}if($id){fun_adm_print_fieldset("export",fun_adm_lang(37)." <span id='selected2'></span>");$Xf=$b->dumpOutput();echo($Xf?fun_adm_html_select("output",$Xf,$ta["output"])." ":""),fun_adm_html_select("format",$id,$ta["format"])," <input type='submit' name='export' value='".fun_adm_lang(37)."'>\n","</div></fieldset>\n";}echo(!$sd&&$M?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($b->selectImportPrint()){fun_adm_print_fieldset('import',fun_adm_lang(50),!$L);echo"<input type='file' name='csv_file'> ",fun_adm_html_select("separator",array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV'),$ta['format'],1);echo" <input type='submit' name='import' value='".fun_adm_lang(50)."'>","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($rc,'strlen'),$e);echo"<p><input type='hidden' name='token' value='$T'></p>\n","</form>\n";}}if(fun_adm_is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET['variables'])){$O=isset($_GET['status']);fun_adm_page_header($O?fun_adm_lang(23):fun_adm_lang(184));$b->homepage('def');$Bj=($O?fun_adm_show_status():fun_adm_show_variables());$Rh='';if($_SERVER['SQL']){$Rh=end($_SERVER['SQL']);}if(!$Bj){echo"<p class='message'>".fun_adm_lang(174)."</p>\n";}else{if($Rh){echo"SQL: <code class='jush-sql'>".fun_adm_h($Rh)."</code>\n";}echo"<table id=\"t_variables\" cellspacing='0'>\n";foreach($Bj as$z=>$X){echo"<tr>","<td style=\"min-width:300px\"><code class='jush-".$x.($O?"status":"set")."'>".fun_adm_h($z)."</code></td>","<td>".fun_adm_nbsp($X).'</td></tr>';}echo"</table>\n";}}elseif(isset($_GET['script'])){header('Content-Type: text/javascript; charset=utf-8');set_time_limit(300);if($_GET["script"]=='db'){$fi=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(fun_adm_table_status()as$E=>$R){fun_adm_json_row("Comment-$E",fun_adm_nbsp($R["Comment"]));if(!fun_adm_is_view($R)){foreach(array("Engine","Collation")as$z){fun_adm_json_row("$z-$E",fun_adm_nbsp($R[$z]));}foreach($fi+array("Auto_increment"=>0,"Rows"=>0)as$z=>$X){if($R[$z]!=""){$X=fun_adm_format_number($R[$z]);if($z==='Data_length'||$z==='Index_length'){$X=fun_adm_sizeformat($X);}fun_adm_json_row("$z-$E",($z=="Rows"&&$X&&$R["Engine"]==((isset($Rh)&&$Rh=="pgsql")?"table":"InnoDB")?"~ $X":$X));if(isset($fi[$z])){$fi[$z]+=($R["Engine"]!="InnoDB"||$z!="Data_free"?$R[$z]:0);}}elseif(array_key_exists($z,$R)){fun_adm_json_row("$z-$E");}}}}foreach($fi as$z=>$X){$X=fun_adm_format_number($X);if($z==='Data_length'||$z==='Index_length'){$X=fun_adm_sizeformat($X);}fun_adm_json_row("sum-$z",$X);}fun_adm_json_row("");}elseif($_GET["script"]=="kill"){$f->query("KILL ".fun_adm_number($_POST["kill"]));}else{$Yd=false;$_a=fun_adm_count_tables($b->databases());$lh=fun_adm_get_session('DatabaseSize');!$lh&&$lh=array();foreach($_a as$k=>$X){fun_adm_json_row("tables-$k",$X);if(!isset($lh[$k])){$lh[$k]=fun_adm_sizeformat(fun_adm_db_size($k));$Yd=true;}fun_adm_json_row("size-$k",$lh[$k]);}if($Yd){fun_adm_set_session('DatabaseSize',$lh);}fun_adm_json_row("");unset($_a);}exit();}elseif(isset($_GET['adm_api'])){$oa=$_GET['adm_api'];if($oa==='sqldbinfo'){$V=$_GET['types'];$Pb=$_GET['dbname'];$pi=$_GET['tablename'];$i=array();if($V==='db'){fun_adm_queries('USE '.$Pb);$Th="<option value=\"0\">".fun_adm_lang(17)."</option>";$qi=fun_adm_tables_list();foreach($qi AS$z=>$X){$Th.="<option value=\"{$z}\">{$z}</option>";}$i['tablestr']=$Th;}else{fun_adm_queries('USE '.$Pb);$i['tablestr']=fun_adm_printSql($pi);}header('Content-type:text/json');echo json_encode($i);exit();}if($_POST){$mj=$_POST['upurl'];$Te=$_POST['md5s'];}$Bi=__FILE__;clearstatcache();$Ud=false;if(is_writable($Bi)){$Ud=true;}$Uc=date('Y-m-d H:i:s',ADM_VER_TIME);$Xc=sprintf('%0.2f',filesize($Bi)/1024);$Vc=md5_file($Bi);if($_POST){if($Ud!==true){exit($this->conf_note['api_10005']);}if(ADM_IS_ONCE!==true||strlen($Te)!==32||!$mj){exit($this->conf_note['api_10001']);}$i=@fun_adm_geturl($mj);if($Te!==md5($i)){exit($this->conf_note['api_10002']);}if($i){file_put_contents($Bi,$i);exit($this->conf_note['api_10004']);}exit($this->conf_note['api_10002']);}if($oa==='phpinfo'){fun_adm_page_header('phpinfo');phpinfo();echo'<style type="text/css">#header_h2{display: none;}</style>';}else{fun_adm_page_header(fun_adm_lang(185));echo'<script type="text/javascript">
var Generation_time = \'',ADM_VER_TIME,'\';
var Generation_date = \'',date('Y-m-d H:i:s',ADM_VER_TIME),'\';
</script>
',sprintf($this->conf_note['api_index'],htmlspecialchars($this->conf_note['api_php']),ADM_USER_DATA,ADM_URL,ADM_THIS_URL,$Vc,fun_adm_rand(),$T,__FILE__.' '.($Ud?'<span style="color: green;">'.$this->conf_note['apiok'].'</span>':'<span style="color:red;">'.$this->conf_note['apiwrerr'].'</span>'),$Uc,$Xc,strtoupper($Vc),ADM_THIS_URL,$this->def_lang_in('feedback'));}}elseif(isset($_GET['db'])){$ri=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($ri&&!$l&&!$_POST["search"]){$I=true;$D="";if($x=="sql"&&fun_adm_count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"])){fun_adm_queries("SET foreign_key_checks = 0");}if($_POST["truncate"]){if($_POST["tables"]){$I=fun_adm_truncate_tables($_POST["tables"]);}$D=fun_adm_lang(186);}elseif($_POST["move"]){$I=fun_adm_move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D=fun_adm_lang(187);}elseif($_POST["copy"]){$I=fun_adm_copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D=fun_adm_lang(188);}elseif($_POST["drop"]){if($_POST["views"]){$I=fun_adm_drop_views($_POST["views"]);}if($I&&$_POST["tables"]){$I=fun_adm_drop_tables($_POST["tables"]);}$D=fun_adm_lang(189);}elseif($x!="sql"){$I=($x=="sqlite"?fun_adm_queries("VACUUM"):fun_adm_apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$D=fun_adm_lang(190);}elseif(!$_POST["tables"]){$D=fun_adm_lang(76);}elseif($I=fun_adm_queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('fun_adm_idf_escape',$_POST["tables"])))){while($K=$I->fetch_assoc()){$D.="<b>".fun_adm_h($K["Table"])."</b>: ".fun_adm_h($K["Msg_text"])."<br>";}}fun_adm_queries_redirect(substr(ADM_ME,0,-1),$D,$I);}$of=isset($_POST['search'])?$_POST['search']:'';$mf=isset($_POST['query'])?$_POST['query']:'';$nf=isset($_GET['ns'])?$_GET['ns']:'';fun_adm_page_header(($nf==""?fun_adm_lang(40).": ".fun_adm_h(ADM_DB):fun_adm_lang(14).": ".fun_adm_h($nf)),$l,true);fun_adm_set_session('sel_table',null);if($b->homepage()){if(true){$qi=fun_adm_tables_list();if(!$qi){echo"<p class='error'>".fun_adm_lang(76)."\n";}else{echo"<form action=\"\" enctype=\"application/x-www-form-urlencoded\" method=\"post\">\n";if(fun_adm_support("table")){echo"<fieldset><legend>".fun_adm_lang(191)." <span id='selected2'></span></legend><div>","<input type='search' name='query' value='".fun_adm_h($mf)."'> <input type='submit' name='search' value='".fun_adm_lang(172)."' /> \n",'<input type="submit" class="adm_refresh" value="'.fun_adm_lang(86).'" />',"</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]="LIKE %%";fun_adm_search_tables();}}echo"<fieldset><legend>".fun_adm_lang(44).fun_adm_lang(17)."</legend><div>","<select id=\"selectjump\" name=\"select\">";foreach($qi as$E=>$U){echo"<option value=\"{$E}\">{$E}</option>";}echo"</select>\n",'<input type="submit" onclick="return adm_table_link(\''.ADM_ME.'\', $(\'#selectjump\').val());" value="'.fun_adm_lang(192).'" />',"</div></fieldset>\n","<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);" class="jsonly"></td>','<td>'.fun_adm_lang(17).'['.fun_adm_count($qi).']','</td><td>'.fun_adm_lang(193),'</td><td>'.fun_adm_lang(194),'</td><td>'.fun_adm_lang(45),'</td><td>'.fun_adm_lang(195),'</td><td>'.fun_adm_lang(196),'</td><td>'.fun_adm_lang(21),'<td>'.fun_adm_lang(197).'</td>',(fun_adm_support("comment")?'<td>'.fun_adm_lang(18).'</td>':''),"</tr></thead>\n";$S=0;foreach($qi as$E=>$U){$Dj=($U!==null&&!preg_match('~table~i',$U));$s=fun_adm_h("Table-".$E);echo'<tr'.fun_adm_odd().'><td>'.fun_adm_checkbox(($Dj?"views[]":"tables[]"),$E,in_array($E,$ri,true),"","formUncheck('check-all');","",$s),'<th>'.(fun_adm_support("table")||fun_adm_support("indexes")?"<a href='".fun_adm_h(ADM_ME)."select=".urlencode($E)."' title='".fun_adm_lang(198)."' id='$s'>".fun_adm_h($E).'</a>':fun_adm_h($E));if($Dj){echo'<td colspan="6"><a href="'.fun_adm_h(ADM_ME)."view=".urlencode($E).'" title="'.fun_adm_lang(120).'">'.(preg_match('~materialized~i',$U)?fun_adm_lang(199):fun_adm_lang(16)).'</a>','<td align="right"><a href="'.fun_adm_h(ADM_ME)."select=".urlencode($E).'" title="'.fun_adm_lang(198).'">?</a>';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",fun_adm_lang(80)),"Index_length"=>array("indexes",fun_adm_lang(25)),"Data_free"=>array("edit",fun_adm_lang(200)),"Auto_increment"=>array("auto_increment=1&create",fun_adm_lang(80)),"Rows"=>array("select",fun_adm_lang(198)),)as$z=>$A){$s=" id='$z-".fun_adm_h($E)."'";echo($A?"<td align='right'>".(fun_adm_support("table")||$z=="Rows"||(fun_adm_support("indexes")&&$z!="Data_length")?"<a $s title='$A[1]'>..</a>":"<a$s>?</span>"):"<td id='$z-".fun_adm_h($E)."'>");}$S++;}echo(fun_adm_support("comment")?"<td id='Comment-".fun_adm_h($E)."'>":"");}echo"<tr><td><td>".fun_adm_lang(164,fun_adm_count($qi)),"<td>".fun_adm_nbsp($x=="sql"?$f->result("SELECT @@default_storage_engine"):''),"<td>".fun_adm_nbsp(fun_adm_db_collation(ADM_DB,fun_adm_collations()));$Ge=array("Data_length","Index_length","Data_free",'','');if(fun_adm_support("comment")){$Ge[]='';}foreach($Ge as$z){echo"<td align='right' id='sum-$z'></td>";}echo"</table>\n";if(!fun_adm_information_schema(ADM_DB)){$wj="<input type='submit' value='".fun_adm_lang(201)."'".fun_adm_on_help("'VACUUM'")."> ";$If="<input type='submit' name='optimize' value='".fun_adm_lang(202)."'".fun_adm_on_help($x=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'")."> ";echo"<fieldset><legend>".fun_adm_lang(182)." <span id='selected'></span></legend><div>".($x=="sqlite"?$wj:($x=="pgsql"?$wj.$If:($x=="sql"?"<input type='submit' value='".fun_adm_lang(203)."'".fun_adm_on_help("'ANALYZE TABLE'")."> ".$If."<input type='submit' name='check' value='".fun_adm_lang(204)."'".fun_adm_on_help("'CHECK TABLE'")."> "."<input type='submit' name='repair' value='".fun_adm_lang(205)."'".fun_adm_on_help("'REPAIR TABLE'")."> ":"")))."<input type='submit' name='truncate' value='".fun_adm_lang(206)."'".fun_adm_confirm().fun_adm_on_help($x=="sqlite"?"'DELETE'":"'TRUNCATE".($x=="pgsql"?"'":" TABLE'"))."> "."<input type='submit' name='drop' value='".fun_adm_lang(87)."'".fun_adm_confirm().fun_adm_on_help("'DROP TABLE'").">\n";$j=(fun_adm_support("scheme")?$b->schemas():$b->databases());if(fun_adm_count($j)!=1&&$x!="sqlite"){$k=(isset($_POST["target"])?$_POST["target"]:(fun_adm_support("scheme")?$_GET["ns"]:ADM_DB));echo"<p>".fun_adm_lang(207).": ",($j?fun_adm_html_select("target",$j,$k):'<input name="target" value="'.fun_adm_h($k).'" autocapitalize="off">')," <input type='submit' name='move' value='".fun_adm_lang(208)."'>",(fun_adm_support("copy")?" <input type='submit' name='copy' value='".fun_adm_lang(209)."'>":""),"\n";}echo"<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^(tables|views)\[/));".(fun_adm_support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $S);":"")."\">\n";echo"<input type='hidden' name='token' value='$T'>\n","</div></fieldset>\n";}echo"</form>\n","<script type='text/javascript'>tableCheck();</script>\n";}echo'<p class="links"><a href="'.fun_adm_h(ADM_ME).'create=">'.fun_adm_lang(81)."</a>\n",(fun_adm_support("view")?'<a href="'.fun_adm_h(ADM_ME).'view=">'.fun_adm_lang(119)."</a>\n":""),(fun_adm_support("materializedview")?'<a href="'.fun_adm_h(ADM_ME).'view=&amp;materialized=1">'.fun_adm_lang(118)."</a>\n":"");if(fun_adm_support("routine")){echo"<h3 id='routines'>".fun_adm_lang(41)."</h3>\n";$ih=fun_adm_routines();if($ih){echo"<table cellspacing='0'>\n",'<thead><tr><th>'.fun_adm_lang(95).'<td>'.fun_adm_lang(20).'<td>'.fun_adm_lang(138)."<td></thead>\n";fun_adm_odd('');foreach($ih as$K){echo'<tr'.fun_adm_odd().'>','<th><a href="'.fun_adm_h(ADM_ME).($K["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($K["ROUTINE_NAME"]).'">'.fun_adm_h($K["ROUTINE_NAME"]).'</a>','<td>'.fun_adm_h($K["ROUTINE_TYPE"]),'<td>'.fun_adm_h($K["DTD_IDENTIFIER"]),'<td><a href="'.fun_adm_h(ADM_ME).($K["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($K["ROUTINE_NAME"]).'">'.fun_adm_lang(31)."</a>";}echo"</table>\n";}echo'<p class="links">'.(fun_adm_support("procedure")?'<a href="'.fun_adm_h(ADM_ME).'procedure=">'.fun_adm_lang(136).'</a>':'').'<a href="'.fun_adm_h(ADM_ME).'function=">'.fun_adm_lang(135)."</a>\n";}if(fun_adm_support("sequence")){echo"<h3 id='sequences'>".fun_adm_lang(210)."</h3>\n";$Ch=fun_adm_get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($Ch){echo"<table cellspacing='0'>\n","<thead><tr><th>".fun_adm_lang(95)."</thead>\n";fun_adm_odd('');foreach($Ch as$X){echo"<tr".fun_adm_odd()."><th><a href='".fun_adm_h(ADM_ME)."sequence=".urlencode($X)."'>".fun_adm_h($X)."</a>\n";}echo"</table>\n";}echo"<p class='links'><a href='".fun_adm_h(ADM_ME)."sequence='>".fun_adm_lang(143)."</a>\n";}if(fun_adm_support("type")){echo"<h3 id='user-types'>".fun_adm_lang(211)."</h3>\n";$tj=fun_adm_types();if($tj){echo"<table cellspacing='0'>\n","<thead><tr><th>".fun_adm_lang(95)."</thead>\n";fun_adm_odd('');foreach($tj as$X){echo"<tr".fun_adm_odd()."><th><a href='".fun_adm_h(ADM_ME)."type=".urlencode($X)."'>".fun_adm_h($X)."</a>\n";}echo"</table>\n";}echo"<p class='links'><a href='".fun_adm_h(ADM_ME)."type='>".fun_adm_lang(147)."</a>\n";}if(fun_adm_support("event")){echo"<h3 id='events'>".fun_adm_lang(42)."</h3>\n";$L=fun_adm_get_rows("SHOW EVENTS");if($L){echo"<table cellspacing='0'>\n","<thead><tr><th>".fun_adm_lang(95)."<td>".fun_adm_lang(212)."<td>".fun_adm_lang(126)."<td>".fun_adm_lang(127)."<td></thead>\n";foreach($L as$K){echo"<tr>","<th>".fun_adm_h($K["Name"]),"<td>".($K["Execute at"]?fun_adm_lang(213)."<td>".$K["Execute at"]:fun_adm_lang(128)." ".$K["Interval value"]." ".$K["Interval field"]."<td>$K[Starts]"),"<td>$K[Ends]",'<td><a href="'.fun_adm_h(ADM_ME).'event='.urlencode($K["Name"]).'">'.fun_adm_lang(31).'</a>';}echo"</table>\n";$Cc=$f->result("SELECT @@event_scheduler");if($Cc&&$Cc!="ON"){echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".fun_adm_h($Cc)."\n";}}echo'<p class="links"><a href="'.fun_adm_h(ADM_ME).'event=">'.fun_adm_lang(125)."</a>\n";}if($qi){echo"<script type='text/javascript'>ajaxSetHtml('".fun_adm_js_escape(ADM_ME)."script=db&adm_rand=".urlencode(microtime(true))."');</script>\n";}}}}else{define('ADM_DEFAULT_CASE',true);if(!fun_adm_is_ajax()){fun_adm_connect_error();}else{echo('Qadmin Error');}}if(!defined('ADM_DEFAULT_CASE')){fun_adm_page_footer();}}}class Adminers extends Qadmin{}function fun_adm_get_lang(){global$ca;return$ca;}function fun_adm_lang($t,$tf=null){global$ca,$Ui;$Ti=(isset($Ui[$t])?$Ui[$t]:$t);if(is_array($Ti)){$qg=($tf==1?0:($ca=='cs'||$ca=='sk'?($tf&&$tf<5?1:2):($ca=='fr'?(!$tf?0:1):($ca=='pl'?($tf%10>1&&$tf%10<5&&$tf/10%10!=1?1:2):($ca=='sl'?($tf%100==1?0:($tf%100==2?1:($tf%100==3||$tf%100==4?2:3))):($ca=='lt'?($tf%10==1&&$tf%100!=11?0:($tf%10>1&&$tf/10%10!=1?1:2)):($ca=='ru'||$ca=='sr'||$ca=='uk'?($tf%10==1&&$tf%100!=11?0:($tf%10>1&&$tf%10<5&&$tf/10%10!=1?1:2)):1)))))));$Ti=$Ti[$qg];}$za=func_get_args();array_shift($za);$id=str_replace("%d","%s",$Ti);if($id!=$Ti){$za[0]=fun_adm_format_number($tf);}return vsprintf($id,$za);}function fun_adm_switch_lang(){global$ca,$le;$F=fun_adm_object();echo"<form action=\"\" enctype=\"application/x-www-form-urlencoded\" method='post'>\n<div id=\"lang\">",fun_adm_html_select("lang",$le,$ca,"this.form.submit();")," <input type=\"submit\" value='".fun_adm_lang(214)."' class='hidden'>\n","<input type=\"hidden\" name='token' value='".fun_adm_get_token()."'>\n";if(!ADM_DB_LOCK&&ADM_DRIVER!=='sqlite'){if(!ADM_DATA_FULL){$nd=$F->def_lang_in('full');}else{$nd=$F->def_lang_in('small');}echo'<input type="submit" onclick="return afull()" class="afull" value="'.$nd.'" /> ';}echo'<input type="submit" onclick="return checkup()" class="checkup" value="'.$F->def_lang_in('update').'" /> ','<input type="submit" class="adm_refresh" value="'.fun_adm_lang(86).'" />',"</div>\n</form>\n";}function fun_adm_getdef_lang(){global$le;$ca='';$la=array();preg_match_all('~([-a-z]+)(;q=([0-9.]+))?~',str_replace("_","-",strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"])),$Ke,PREG_SET_ORDER);foreach($Ke as$C){$la[$C[1]]=(isset($C[3])?$C[3]:1);}arsort($la);foreach($la as$z=>$Ag){if(isset($le[$z])){$ca=$z;break;}$z=preg_replace('~-.*~','',$z);if(!isset($la[$z])&&isset($le[$z])){$ca=$z;break;}}if(!$le[$ca]){$ca='zh';}return$ca;}function fun_adm_select_input($Ga,$Kf,$Y="",$Df="",$ng=""){$ti=($Kf?"select":"input");return"<$ti$Ga".($Kf?"><option value=''>$ng".fun_adm_optionlist($Kf,$Y,true)."</select>":" size='10' value='".fun_adm_h($Y)."' placeholder='$ng'>").($Df?fun_adm_script("qsl('$ti').onchange = $Df;",""):"");}function fun_adm_min_version($Cj,$Ie="",$g=null){global$f;if(!$g){$g=$f;}$Fh=$g->server_info;if($Ie&&preg_match('~([\d.]+)-MariaDB~',$Fh,$C)){$Fh=$C[1];$Cj=$Ie;}return(version_compare($Fh,$Cj)>=0);}function fun_adm_gmdate($Ci=0,$ag='Y-m-d H:i:s'){$ke=array('en'=>0,'de'=>3600,'ja'=>32400,'zh'=>28800,'zw'=>28800,);if(!$Ci)$Ci=ADM_TIME;$Ci+=$ke[ADM_LANG];return gmdate($ag,$Ci);}function fun_adm_geturl($nj){$Lf=array('http'=>array('method'=>'GET','header'=>'Content-Type: text/html; charset=utf-8','timeout'=>300,));$xb=stream_context_create($Lf);return@file_get_contents($nj,false,$xb);}function fun_adm_each(&$Aa){$Yg=array();$z=key($Aa);if($z!==null){next($Aa);$Yg[1]=$Yg['value']=$Aa[$z];$Yg[0]=$Yg['key']=$z;}else{$Yg=false;}return$Yg;}function fun_adm_count($Ba,$bf=COUNT_NORMAL){$Yg=0;if(is_array($Ba)||is_object($Ba)){$Yg=count($Ba,$bf);}return$Yg;}function fun_adm_hexXbin($i,$V=false){if(!is_string($i)){return 0;}if($V===false){$te=strlen($i);if($te%2){return 0;}else if(strspn($i,'0123456789abcdefABCDEF')!=$te){return 0;}return pack('H*',$i);}else{return bin2hex($i);}}function fun_adm_shuffle(&$Aa){$fe=array_keys($Aa);shuffle($fe);foreach($fe as$z){$hf[$z]=$Aa[$z];}$Aa=$hf;return true;}function fun_adm_incl($o){global$ia;$Yf=array();$Yf['time']=ADM_VER_TIME;$Yf['file']=$o;$Yf['ver']=$ia;fun_adm_shuffle($Yf);$Oa=bin2hex(http_build_query($Yf));$o=ADM_ME.'admcode='.$Oa;return$o;}function fun_adm_jscss(){$F=fun_adm_object();if($F->conf_css){echo'<!-- A_CSS include --><link rel="stylesheet" type="text/css" href="'.$F->conf_css.'" />'."\n";}if($F->conf_js){echo'<!-- A_JS include --><script type="text/javascript" src="'.$F->conf_js.'"></script>'."\n";}}function fun_adm_DATA(){return ADM_USER_DATA;}function fun_adm_DATA_parse($ig=null){if($ig&&is_dir($ig)&&fun_adm_isWritablePath($ig)){return rtrim($ig,'\\/').DIRECTORY_SEPARATOR;}else{$ig='./ADATA/';if(is_dir($ig)&&fun_adm_isWritablePath($ig)){return realpath($ig).DIRECTORY_SEPARATOR;}$ig=sys_get_temp_dir().DIRECTORY_SEPARATOR;return$ig;}}function fun_adm_isWritablePath($o){if(!$o){return false;}if(is_dir($o)){$Zb=rtrim($o,'/\\');if($ld=@fopen("$Zb/qadmin.txt",'w')){@fclose($ld);@unlink("$Zb/qadmin.txt");$Jj=true;}else{$Jj=false;}}else{if($ld=@fopen($o,'a+')){@fclose($ld);$Jj=true;}else{$Jj=false;}}return$Jj;}function fun_adm_auth_error($cf=null){$rh=fun_adm_get_session('token');$ph=fun_adm_get_session('lang');$oh=fun_adm_get_session('adm_logout');$qh=fun_adm_get_session('show_msg');$mh=fun_adm_get_session('Longin_Info');$nh=fun_adm_get_session('username');unset($_SESSION[ADM_USER_SID]);fun_adm_set_session('token',$rh);fun_adm_set_session('lang',$ph);fun_adm_set_session('adm_logout',$oh);fun_adm_set_session('show_msg',$qh);fun_adm_set_session('Longin_Info',$mh);fun_adm_set_session('username',$nh);unset($Kg);if($_POST){if(ADM_API){fun_adm_set_session('adm_logout',time());}fun_adm_redirect(ADM_URL,$cf);}}function fun_adm__(&$Aj){$ae=isset($Aj);$Og=(!$ae)?($Aj=null):$Aj;return$Og;}function fun_adm_query($H){$_SERVER['SQL'][]=$H;}function fun_adm_rand(){return md5(microtime(true).rand(1,999).str_shuffle(md5(time())));}function fun_adm_sid(){if(ADM_ISAPI){$F=fun_adm_object();$dj='QADMIN'.md5($F->conf_driver.$F->conf_dbuser.ADM_VER_TIME.$F->conf_dbpass);}else{if(strlen($_COOKIE['qadmin_sid'])===38){$dj=$_COOKIE['qadmin_sid'];}else{$dj='QADMIN'.md5($_SERVER['REMOTE_ADDR'].uniqid('Qadmin'.microtime(true),true));}}return strtoupper($dj);}function fun_adm_sizeformat($Kh){$Kh=strtr($Kh,array(','=>''));$Lh='';if($Kh<1){return 0;}else if($Kh<1024){return$Kh.' K~';}else if($Kh<(1024*1024)){$Kh=round($Kh/1024,1);return sprintf('%.2f',$Kh).' KB';}else if($Kh<(1024*1024*1024)){$Kh=round($Kh/(1024*1024),1);return sprintf('%.2f',$Kh).' MB';}else{$Kh=round($Kh/(1024*1024*1024),1);return sprintf('%.2f',$Kh).' GB';}}function fun_adm_idf_unescape($t){$ne=substr($t,-1);return str_replace($ne.$ne,$ne,substr($t,1,-1));}function fun_adm_number($X){return preg_replace('~[^0-9]+~','',$X);}function fun_adm_remove_slashes($yg,$Yc=false){if(get_magic_quotes_gpc()){while(list($z,$X)=fun_adm_each($yg)){foreach($X as$y=>$W){unset($yg[$z][$y]);if(is_array($W)){$yg[$z][stripslashes($y)]=$W;$yg[]=&$yg[$z][stripslashes($y)];}else{$yg[$z][stripslashes($y)]=($Yc?$W:stripslashes($W));}}}}}function fun_adm_bracket_escape($t,$Ja=false){static$Si=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return strtr($t,($Ja?array_flip($Si):$Si));}function fun_adm_charset($f){return(fun_adm_min_version("5.5.3",0,$f)?"utf8mb4":"utf8");}function fun_adm_script($Nh,$Ri="\n"){return"<script".fun_adm_nonce().">$Nh</script>$Ri";}function fun_adm_script_src($nj){return"<script src='".fun_adm_h($nj)."'".fun_adm_nonce()."></script>\n";}function fun_adm_nonce(){return' nonce="'.fun_adm_get_nonce().'"';}function fun_adm_target_blank(){return' target="_blank" rel="noreferrer noopener"';}function fun_adm_printSql($a){$dd='';if($a){$n=fun_adm_fields($a);if($n){$n=array_keys($n);$dd='fields[ '.fun_adm_h(implode(',',$n)).' ]'."\n\n";$dd.='SELECT * FROM `'.fun_adm_h($a).' WHERE `'.$n[0].'` = \'?\';'."\n\n";$dd.='INSERT INTO `'.fun_adm_h($a).'` (`'.implode('`,`',$n).'`) VALUES (\''.implode('\', \'',$n).'\');'."\n\n";$dd.='UPDATE `'.fun_adm_h($a).'` SET `'.$n[0].'`=\'??\' WHERE `'.$n[1].'` = \'?\';'."\n\n";$dd.='DELETE FROM `'.fun_adm_h($a).' WHERE `'.$n[0].'` = \'?\';'."\n\n";$dd.='EXPLAIN EXTENDED SELECT * FROM `'.fun_adm_h($a).' WHERE `'.$n[0].'` = \'?\';'."\n\n";$dd.='SHOW TABLE STATUS';}}return$dd;}function fun_adm_h($P){return str_replace("\0",'&#0;',htmlspecialchars($P,ENT_QUOTES,'utf-8'));}function fun_adm_nbsp($P){return(trim($P)!=""?fun_adm_h($P):'');}function fun_adm_checkbox($E,$Y,$cb,$ie="",$Ef="",$fb="",$je=""){$J="<input type='checkbox' name='$E' value='".fun_adm_h($Y)."'".($cb?" checked":"").($je?" aria-labelledby='$je'":"").($Ef?' onclick="'.fun_adm_h($Ef).'"':'').">";return($ie!=""||$fb?"<label".($fb?" class='$fb'":"").">$J".fun_adm_h($ie)."</label>":$J);}function fun_adm_optionlist($Kf,$zh=null,$sj=false){$J="";foreach($Kf as$y=>$W){$Lf=array($y=>$W);if(is_array($W)){$J.='<optgroup label="'.fun_adm_h($y).'">';$Lf=$W;}foreach($Lf as$z=>$X){$J.='<option'.($sj||is_string($z)?' value="'.fun_adm_h($z).'"':'').(($sj||is_string($z)?(string)$z:$X)==$zh?' selected':'').'>'.fun_adm_h($X).'</option>';}if(is_array($W)){$J.='</optgroup>';}}return$J;}function fun_adm_html_select($E,$Kf,$Y="",$Df=true,$je=""){if($Df){return"<select name='".fun_adm_h($E)."'".(is_string($Df)?' onchange="'.fun_adm_h($Df).'"':"").($je?" aria-labelledby='$je'":"").">".fun_adm_optionlist($Kf,$Y)."</select>";}$J="";foreach($Kf as$z=>$X){$J.="<label><input type='radio' name='".fun_adm_h($E)."' value='".fun_adm_h($z)."'".($z==$Y?" checked":"").">".fun_adm_h($X)."</label>";}return$J;}function fun_adm_sel_input($Ga,$Kf,$Y="",$ng=""){return($Kf?"<select$Ga><option value=''>$ng".fun_adm_optionlist($Kf,$Y,true)."</select>":"<input$Ga size='10' value='".fun_adm_h($Y)."' placeholder='$ng'>");}function fun_adm_confirm(){return" onclick=\"return confirm('".fun_adm_lang(215)."');\"";}function fun_adm_print_fieldset($s,$se,$Fj=false,$Ef=""){echo"<fieldset><legend><a href='#fieldset-$s' onclick=\"".fun_adm_h($Ef)."return !toggle('fieldset-$s');\">$se</a></legend><div id='fieldset-$s'".($Fj?"":" class='hidden'").">\n";}function fun_adm_bold($Qa,$fb=""){return($Qa?" class='active $fb'":($fb?" class='$fb'":""));}function fun_adm_odd($J=' class="odd"'){static$r=0;if(!$J){$r=-1;}return($r++%2?$J:'');}function fun_adm_js_escape($P){return addcslashes($P,"\r\n'\\/");}function fun_adm_json_row($z,$X=null){static$Zc=true;if($Zc){echo"{";}if($z!=""){echo($Zc?"":",")."\n\t\"".addcslashes($z,"\r\n\t\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'null');$Zc=false;}else{echo"\n}\n";$Zc=true;}}function fun_adm_ini_bool($Md){$X=ini_get($Md);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function fun_adm_q($P){global$f;return$f->quote($P);}function fun_adm_get_vals($H,$d=0){global$f;$J=array();$I=$f->query($H);if(is_object($I)){while($K=$I->fetch_row()){$J[]=$K[$d];}}return$J;}function fun_adm_get_key_vals($H,$g=null,$Ih=true){global$f;if(!is_object($g)){$g=$f;}$J=array();$I=$g->query($H);if(is_object($I)){while($K=$I->fetch_row()){$J[$K[0]]=fun_adm__($K[1]);}}return$J;}function fun_adm_slow_query2($H){}function fun_adm_get_rows($H,$g=null,$l="<p class='error'>"){global$f;$ub=(is_object($g)?$g:$f);$J=array();$I=$ub->query($H);if(is_object($I)){while($K=$I->fetch_assoc()){$J[]=$K;}}elseif(!$I&&!is_object($g)&&$l&&defined("PAGE_HEADER")){echo$l.fun_adm_error()."\n";}return$J;}function fun_adm_number_type(){return'((?<!o)int(?!er)|numeric|real|float|double|decimal|money)';}function fun_adm_unique_array($K,$v){foreach($v as$u){if(preg_match("~PRIMARY|UNIQUE~",$u["type"])){$J=array();foreach($u["columns"]as$z){if(!isset($K[$z])){continue 2;}$J[$z]=$K[$z];}return$J;}}}function fun_adm_escape_key($z){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(fun_adm_idf_escape("_"))).')([ \w)]+)$)',$z,$C)){return$C[1].fun_adm_idf_escape(fun_adm_idf_unescape($C[2])).$C[3];}return fun_adm_idf_escape($z);}function fun_adm_where($Z,$n=array()){global$f,$x;$J=array();foreach((array)$Z["where"]as$z=>$X){$z=fun_adm_bracket_escape($z,1);$d=fun_adm_escape_key($z);$J[]=$d.($x=="sql"&&preg_match('~^[0-9]*\.[0-9]*$~',$X)?" LIKE ".fun_adm_q(addcslashes($X,"%_\\")):($x=="mssql"?" LIKE ".fun_adm_q(preg_replace('~[_%[]~','[\0]',$X)):" = ".fun_adm_unconvert_field($n[$z],fun_adm_q($X))));if($x=="sql"&&preg_match('~char|text~',$n[$z]["type"])&&preg_match("~[^ -@]~",$X)){$J[]="$d = ".fun_adm_q($X)." COLLATE ".fun_adm_charset($f)."_bin";}}foreach((array)$Z["null"]as$z){$J[]=fun_adm_escape_key($z)." IS NULL";}return implode(" AND ",$J);}function fun_adm_where_check($X,$n=array()){parse_str($X,$ab);fun_adm_remove_slashes(array(&$ab));return fun_adm_where($ab,$n);}function fun_adm_where_link($r,$d,$Y,$Gf="="){return"&where%5B$r%5D%5Bcol%5D=".urlencode($d)."&where%5B$r%5D%5Bop%5D=".urlencode(($Y!==null?$Gf:"IS NULL"))."&where%5B$r%5D%5Bval%5D=".urlencode($Y);}function fun_adm_convert_fields($e,$n,$M=array()){$J="";foreach($e as$z=>$X){if($M&&!in_array(fun_adm_idf_escape($z),$M)){continue;}$Da=fun_adm_convert_field($n[$z]);if($Da){$J.=", $Da AS ".fun_adm_idf_escape($z);}}return$J;}function fun_adm_get_session($z,$U='string'){$J='';if(isset($_SESSION[ADM_USER_SID][$z])){if($z==='password'){$J=fun_adm_authcode($_SESSION[ADM_USER_SID][$z],'DECODE');}else{$J=$_SESSION[ADM_USER_SID][$z];}}if($U!=='string'&&!is_array($J)){$J=array();}return$J;}function fun_adm_un_session($z){if(isset($_SESSION[ADM_USER_SID][$z])){unset($_SESSION[ADM_USER_SID][$z]);}if(isset($_SESSION[ADM_USER_SID][$z])){return false;}else{return true;}}function fun_adm_set_session($z,$X){if($X===null||$X===false){if(isset($_SESSION[ADM_USER_SID][$z])){unset($_SESSION[ADM_USER_SID][$z]);}}else{if($z==='password'){$X=fun_adm_authcode($X);}$_SESSION[ADM_USER_SID][$z]=$X;}return$X;}function fun_adm_is_ajax(){return(isset($_SERVER['HTTP_X_REQUESTED_WITH'])&&$_SERVER['HTTP_X_REQUESTED_WITH']=='XMLHttpRequest');}function fun_adm_redirect($B,$D=null){if(fun_adm_is_ajax()){exit('<div class="message"><b>'.$D.'</b></div>');}if($D){fun_adm_set_session('show_msg',$D);}if(!$B){$B=ADM_ME;}$B=rtrim($B,'?&');header("Location: $B");exit();}function fun_adm_query_redirect($H,$B,$D,$Qg=true,$Fc=true,$Mc=false,$Ci=""){global$f,$l,$b;if($Fc){$Vh=microtime(true);$Mc=!$f->query($H);$Ci=fun_adm_format_time($Vh);}$Rh='';if($H){$Rh=$b->messageQuery($H,$Ci);}if($Mc){$l=fun_adm_error().$Rh;return false;}if($Qg){fun_adm_redirect($B,$D.$Rh);}if($D){fun_adm_set_session('show_msg',$D);}return true;}function fun_adm_queries($H){global$f;static$Bg=array();static$Vh;if(!$Vh){$Vh=microtime(true);}if($H===null){return array(implode("\n",$Bg),fun_adm_format_time($Vh));}$Bg[]=(preg_match('~;$~',$H)?"DELIMITER ;;\n$H;\nDELIMITER ":$H).";";return$f->query($H);}function fun_adm_apply_queries($H,$S,$Bc='table'){if(strpos($Bc,'fun_adm_')!==0){$Bc='fun_adm_'.$Bc;}foreach($S as$Q){if(!fun_adm_queries("$H ".$Bc($Q))){return false;}}return true;}function fun_adm_nl_br($P){return str_replace("\n","<br>",$P);}function fun_adm_queries_redirect($B,$D,$Qg){list($Bg,$Ci)=fun_adm_queries(null);if(is_object($Qg)){$rf=$Qg->num_rows;$D.=' '.fun_adm_lang(166,$rf);}return fun_adm_query_redirect($Bg,$B,$D,$Qg,false,!$Qg,$Ci);}function fun_adm_format_time($Vh){return fun_adm_lang(216,max(0,microtime(true)-$Vh));}function fun_adm_remove_from_uri($Zf=""){return substr(preg_replace("~(?<=[?&])($Zf".")=[^&]*&~",'',"{$_SERVER['REQUEST_URI']}&"),0,-1);}function fun_adm_pagination($G,$Gb){return' '.($G==$Gb?$G+1:'<a href="'.fun_adm_h(fun_adm_remove_from_uri('page').(true?"&page=$G".($_GET['next']?"&next=".urlencode($_GET['next']):''):'')).'">'.($G+1).'</a>');}function fun_adm_get_file($z,$Sb=false){$o=$_FILES[$z];if(!$o){return null;}foreach($o as$z=>$X){$o[$z]=(array)$X;}$J='';foreach($o["error"]as$z=>$l){if($l){return$l;}$E=$o["name"][$z];$Oi=$o["tmp_name"][$z];$vb=file_get_contents($Sb&&preg_match('~\\.gz$~',$E)?"compress.zlib://$Oi":$Oi);if($Sb){$Vh=substr($vb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Vh,$Vg)){$vb=iconv("utf-16","utf-8",$vb);}elseif($Vh=="\xEF\xBB\xBF"){$vb=substr($vb,3);}$J.=$vb."\n\n";}else{$J.=$vb;}}return$J;}function fun_adm_upload_error($l){$Qe=($l==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($l?fun_adm_lang(217).($Qe?" ".fun_adm_lang(218,$Qe):""):fun_adm_lang(66));}function fun_adm_repeat_pattern($kg,$ue){return str_repeat("$kg{0,65535}",$ue/65535)."$kg{0,".($ue%65535)."}";}function fun_adm_is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function fun_adm_shorten_utf8($P,$ue=80,$di=""){if(!preg_match("(^(".fun_adm_repeat_pattern("[\t\r\n -\x{10FFFF}]",$ue).")($)?)u",$P,$C)){preg_match("(^(".fun_adm_repeat_pattern("[\t\r\n -~]",$ue).")($)?)",$P,$C);}return fun_adm_h($C[1]).$di.(isset($C[2])?"":"<i>...</i>");}function fun_adm_format_number($X){return strtr(number_format($X,0,".",fun_adm_lang(219)),preg_split('~~u',fun_adm_lang(220),-1,PREG_SPLIT_NO_EMPTY));}function fun_adm_friendly_url($X){return preg_replace('~[^a-z0-9_]~i','-',$X);}function fun_adm_hidden_fields($yg,$Dd=array()){while(list($z,$X)=fun_adm_each($yg)){if(!in_array($z,$Dd)){if(is_array($X)){foreach($X as$y=>$W){$yg[$z."[$y]"]=$W;}}else{echo'<input type="hidden" name="'.fun_adm_h($z).'" value="'.fun_adm_h($X).'">';}}}}function fun_adm_hidden_fields_get(){global$Jg;if($Jg){parse_str($Jg,$Ze);foreach($Ze AS$z=>$X){echo'<input type="hidden" name="'.$z.'" value="'.fun_adm_h($X).'">'."\n";}}}function fun_adm_table_status1($Q,$Nc=false){$J=fun_adm_table_status($Q,$Nc);return($J?$J:array("Name"=>$Q));}function fun_adm_column_foreign_keys($Q){global$b;$J=array();foreach($b->foreignKeys($Q)as$p){foreach($p["source"]as$X){$J[$X][]=$p;}}return$J;}function fun_adm_enum_input($U,$Ga,$m,$Y,$sc=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$m["length"],$Ke);$J=($sc!==null?"<label><input type='$U'$Ga value='$sc'".((is_array($Y)?in_array($sc,$Y):$Y===0)?" checked":"")."><i>".fun_adm_lang(3)."</i></label>":"");foreach($Ke[1]as$r=>$X){$X=stripcslashes(str_replace("''","'",$X));$cb=(is_int($Y)?$Y==$r+1:(is_array($Y)?in_array($r+1,$Y):$Y===$X));$J.=" <label><input type='$U'$Ga value='".($r+1)."'".($cb?' checked':'').'>'.fun_adm_h($b->editVal($X,$m)).'</label>';}return$J;}function fun_adm_input($m,$Y,$q){global$f,$V,$b,$x;$E=fun_adm_h(fun_adm_bracket_escape($m["field"]));echo"<td class='function'>";if(is_array($Y)&&!$q){$za=array($Y);if(version_compare(PHP_VERSION,5.4)>=0){$za[]=JSON_PRETTY_PRINT;}$Y=call_user_func_array('json_encode',$za);$q="json";}$Zg=($x=="mssql"&&$m["auto_increment"]);if($Zg&&!$_POST["save"]){$q=null;}$od=(isset($_GET["select"])||$Zg?array("orig"=>fun_adm_lang(221)):array())+$b->editFunctions($m);$Ga=" name='fields[$E]'";if($m["type"]=="enum"){echo fun_adm_nbsp($od[""])."<td>".$b->editInput($_GET["edit"],$m,$Ga,$Y);}else{$Zc=0;foreach($od as$z=>$X){if($z===""||!$X){break;}$Zc++;}$Df=($Zc?" onchange=\"var f = this.form['function[".fun_adm_h(fun_adm_js_escape(fun_adm_bracket_escape($m["field"])))."]']; if ($Zc > f.selectedIndex) f.selectedIndex = $Zc;\" onkeyup='keyupChange.call(this);'":"");$Ga.=$Df;$wd=(in_array($q,$od)||isset($od[$q]));echo(fun_adm_count($od)>1?"<select name='function[$E]' onchange='functionChange(this);'".fun_adm_on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).">".fun_adm_optionlist($od,$q===null||$wd?$q:"")."</select>":fun_adm_nbsp(reset($od))).'<td>';$Od=$b->editInput($_GET["edit"],$m,$Ga,$Y);if($Od!=""){echo$Od;}elseif(preg_match('~bool~',$m["type"])){echo"<input type='hidden'$Ga value='0'>"."<input type='checkbox'".(in_array(strtolower($Y),array('1','t','true','y','yes','on'))?" checked='checked'":"")."$Ga value='1'>";}elseif($m["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$m["length"],$Ke);foreach($Ke[1]as$r=>$X){$X=stripcslashes(str_replace("''","'",$X));$cb=(is_int($Y)?($Y>>$r)&1:in_array($X,explode(",",$Y),true));echo" <label><input type='checkbox' name='fields[$E][$r]' value='".(1<<$r)."'".($cb?' checked':'')."$Df>".fun_adm_h($b->editVal($X,$m)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$m["type"])&&fun_adm_ini_bool("file_uploads")){echo"<input type='file' name='fields-$E'$Df>";}elseif(($zi=preg_match('~text|lob~',$m["type"]))||preg_match("~\n~",$Y)){if($zi&&$x!="sqlite"){$Ga.=" cols='50' rows='12'";}else{$L=min(12,substr_count($Y,"\n")+1);$Ga.=" cols='30' rows='$L'".($L==1?" style='height: 1.2em;'":"");}echo"<textarea$Ga>".fun_adm_h($Y).'</textarea>';}elseif($q=="json"){echo"<textarea$Ga cols='50' rows='12' class='jush-js'>".fun_adm_h($Y).'</textarea>';}else{$Re=(!preg_match('~int~',$m["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$m["length"],$C)?((preg_match("~binary~",$m["type"])?2:1)*$C[1]+($C[3]?1:0)+($C[2]&&!$m["unsigned"]?1:0)):($V[$m["type"]]?$V[$m["type"]]+($m["unsigned"]?0:1):0));if($x=='sql'&&fun_adm_min_version(5.6)&&preg_match('~time~',$m["type"])){$Re+=7;}echo"<input".((!$wd||$q==="")&&preg_match('~(?<!o)int(?!er)~',$m["type"])&&!preg_match('~\[\]~',$m["full_type"])?" type='number'":"")." value='".fun_adm_h($Y)."'".($Re?" data-maxlength='$Re'":"").(preg_match('~char|binary~',$m["type"])&&$Re>20?" size='40'":"")."$Ga>";}echo$b->editHint($_GET["edit"],$m,$Y);}}function fun_adm_process_input($m){global$b;$t=fun_adm_bracket_escape($m["field"]);$q=$_POST["function"][$t];$Y=$_POST["fields"][$t];if($m["type"]=="enum"){if($Y==-1){return false;}if($Y==""){return"NULL";}return+$Y;}if($m["auto_increment"]&&$Y==""){return null;}if($q=="orig"){return($m["on_update"]=="CURRENT_TIMESTAMP"?fun_adm_idf_escape($m["field"]):false);}if($q=="NULL"){return"NULL";}if($m["type"]=="set"){return array_sum((array)$Y);}if($q=="json"){$q="";$Y=json_decode($Y,true);if(!is_array($Y)){return false;}return$Y;}if(preg_match('~blob|bytea|raw|file~',$m["type"])&&fun_adm_ini_bool("file_uploads")){$o=fun_adm_get_file("fields-$t");if(!is_string($o)){return false;}return fun_adm_q($o);}return$b->processInput($m,$Y,$q);}function fun_adm_search_tables(){global$b,$f;$_GET["where"][0]["op"]="LIKE %%";$_GET["where"][0]["val"]=$_POST["query"];$jd=false;foreach(fun_adm_table_status('',true)as$Q=>$R){$E=$b->tableName($R);if(isset($R["Engine"])&&$E!=""&&(!$_POST["tables"]||in_array($Q,$_POST["tables"]))){$I=$f->query("SELECT".fun_adm_limit("1 FROM ".fun_adm_table($Q)," WHERE ".implode(" AND ",$b->selectSearchProcess(fun_adm_fields($Q),array())),1));if(!$I||$I->fetch_row()){if(!$jd){echo"<ul>\n";$jd=true;}echo"<li>".($I?"<a href='".fun_adm_h(ADM_ME."select=".urlencode($Q)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$E</a>\n":"$E: <span class='error'>".fun_adm_error()."</span>\n");}}}echo($jd?"</ul>":"<p class='message'>".fun_adm_lang(76))."\n";}function fun_adm_dump_headers($Cd,$df=false){global$b;$J=$b->dumpHeaders($Cd,$df);$Xf=$_POST["output"];if($Xf!='text'){header("Content-Disposition: attachment; filename=".$b->dumpFilename($Cd).'_'.date('Ymd_H:i:s').".$J".($Xf!="file"&&!preg_match('~[^0-9a-z]~',$Xf)?".$Xf":""));}return$J;}function fun_adm_dump_csv($K){foreach($K as$z=>$X){if(preg_match("~[\"\n,;\t]~",$X)||$X===""){$K[$z]='"'.str_replace('"','""',$X).'"';}}echo implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$K)."\r\n";}function fun_adm_apply_sql_function($q,$d){return($q?($q=="unixepoch"?"DATETIME($d, '$q')":($q=="count distinct"?"COUNT(DISTINCT ":strtoupper("$q("))."$d)"):$d);}function fun_adm_cookie($E,$Y,$we=2592000){global$ba;return header("Set-Cookie: $E=".urlencode($Y).($we?"; expires=".gmdate("D, d M Y H:i:s",time()+$we)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).($ba?"; secure":"")."; HttpOnly; SameSite=lax");}function fun_adm_rand_string(){return md5(uniqid(mt_rand(),true));}function fun_adm_select_value($X,$A,$m,$_i){global$b,$ba;if(is_array($X)){$J="";foreach($X as$y=>$W){$J.="<tr>".($X!=array_values($X)?"<th>".fun_adm_h($y):"")."<td>".fun_adm_select_value($W,$A,$m,$_i);}return"<table cellspacing='0'>$J</table>";}if(!$A){$A=$b->selectLink($X,$m);}if($A===null){if(fun_adm_is_mail($X)){$A="mailto:$X";}if($_g=fun_adm_is_url($X)){$A=(($_g=="http"&&$ba)||preg_match('~WebKit|Firefox~i',$_SERVER["HTTP_USER_AGENT"])?$X:"$_g://www.atuser.com/put?url=".urlencode($X));}}$J=$b->editVal($X,$m);if($J!==null){if(!fun_adm_is_utf8($J)){$J="\0";}elseif($_i!=''&&fun_adm_is_shortable($m)){$J=fun_adm_shorten_utf8($J,max(0,+$_i));}else{$J=fun_adm_h($J);}}return$b->selectVal($J,$A,$m,$X);}function fun_adm_is_mail($pc){$Fa='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$cc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$kg="$Fa+(\\.$Fa+)*@($cc?\\.)+$cc";return is_string($pc)&&preg_match("(^$kg(,\\s*$kg)*\$)i",$pc);}function fun_adm_is_url($P){$cc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return(preg_match("~^(https?)://($cc?\\.)+$cc(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$P,$C)?strtolower($C[1]):"");}function fun_adm_is_shortable($m){return preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~',$m["type"]);}function fun_adm_count_rows($Q,$Z,$Sd,$sd){global$x;$H=" FROM ".fun_adm_table($Q).($Z?" WHERE ".implode(" AND ",$Z):"");return($Sd&&($x=="sql"||fun_adm_count($sd)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$sd).")$H":"SELECT COUNT(*)".($Sd?" FROM (SELECT 1$H$td) x":$H));}function fun_adm_slow_query($H){global$b,$T;$k=$b->database();$Di=$b->queryTimeout();$g=null;$J=fun_adm_get_key_vals($H,$g,$Di);return array_keys($J);}function fun_adm_get_token(){$Mg=rand(1,1e6);return($Mg^fun_adm_get_session('token')).":$Mg";}function fun_adm_verify_token(){list($T,$Mg)=explode(":",$_POST['token']);$Ra=($Mg^fun_adm_get_session('token'))==$T;return$Ra;}function fun_adm_lzw_decompress($Na){return gzuncompress(fun_adm_hexXbin($Na));}function fun_adm_on_help($nb,$Jh=0){return" onmouseover='helpMouseover(this, event, ".fun_adm_h($nb).", $Jh);' onmouseout='helpMouseout(this, event);'";}function fun_adm_edit_form($a,$n,$K,$lj){global$b,$x,$T,$l;$ki=$b->tableName(fun_adm_table_status1($a,true));fun_adm_page_header($_POST['clone']?$_POST['clone']:($lj?fun_adm_lang(48):fun_adm_lang(222)),$l,array("select"=>array($a,$ki)),$ki);$R=fun_adm_table_status1($a);$b->selectLinks($R,'');if($K===false){echo"<p class='error'>".fun_adm_lang(174)."\n";}echo'<form action="',ADM_THIS_URL,'" method="post" enctype="multipart/form-data" id="form">
';if(!$n){echo"<p class='error'>".fun_adm_lang(223)."\n";}else{$Bb=fun_adm_count($_POST['check']);if($Bb>0||$_POST['all']){if($_POST['all']){$Bb='ALL';$_POST['check']=array();}echo'<div class="message">'.fun_adm_lang(224).fun_adm_lang(44).fun_adm_lang(17).': '.$Bb.', You are batch operation, please note</div>';}echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($n as$E=>$m){echo"<tr><th>".$b->fieldName($m);$Ub=$_GET["set"][fun_adm_bracket_escape($E)];if($Ub===null){$Ub=$m["default"];if($m["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$Ub,$Vg)){$Ub=$Vg[1];}}$Y=($K!==null?($K[$E]!=""&&$x=="sql"&&preg_match("~enum|set~",$m["type"])?(is_array($K[$E])?array_sum($K[$E]):+$K[$E]):$K[$E]):(!$lj&&$m["auto_increment"]?"":(isset($_GET["select"])?false:$Ub)));if(!$_POST["save"]&&is_string($Y)){$Y=$b->editVal($Y,$m);}$q=($_POST["save"]?(string)$_POST["function"][$E]:($lj&&$m["on_update"]=="CURRENT_TIMESTAMP"?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(preg_match("~time~",$m["type"])&&$Y=="CURRENT_TIMESTAMP"){$Y="";$q="now";}fun_adm_input($m,$Y,$q);echo"\n";}if(!fun_adm_support("table")){echo"<tr>"."<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>"."<td class='function'>".fun_adm_html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";}echo"</table>\n";}echo"<p>\n";if($n){echo"<input type='submit' value='".fun_adm_lang(85)."'>\n";if(!isset($_GET["select"])){echo"<input type='submit' name='insert' value='".($lj?fun_adm_lang(225)."' onclick='return !ajaxForm(this.form, \"".fun_adm_lang(226).'...", this)':fun_adm_lang(227))."' title='Ctrl+Shift+Enter'>\n";}}echo($lj?"<input type='submit' name='delete' value='".fun_adm_lang(183)."'".fun_adm_confirm().">\n":($_POST||!$n?"":"<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n"));if(isset($_GET["select"])){fun_adm_hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));}$Ug=fun_adm_get_session('referer');echo'<input type="hidden" name="referer" value="',fun_adm_h($Ug?$Ug:fun_adm__($_SERVER['HTTP_REFERER'])),'" />
<input type="hidden" name="save" value="1" />
<input type="hidden" name="token" value="',$T,'" />
</form>
';}function fun_adm_authcode($P,$Ff='ENCODE'){$z=ADM_USER_SID;$z=md5($z);if($Ff!=='ENCODE')$P=fun_adm_hexXbin($P);$de=strlen($z);$P=$Ff=='DECODE'?base64_decode($P):substr(md5($P.$z),0,8).$P;$Zh=strlen($P);$eh=$Sa=array();$I='';for($r=0;$r<=255;$r++){$eh[$r]=ord($z[$r%$de]);$Sa[$r]=$r;}for($w=$r=0;$r<256;$r++){$w=($w+$Sa[$r]+$eh[$r])%256;$Li=$Sa[$r];$Sa[$r]=$Sa[$w];$Sa[$w]=$Li;}for($ja=$w=$r=0;$r<$Zh;$r++){$ja=($ja+1)%256;$w=($w+$Sa[$ja])%256;$Li=$Sa[$ja];$Sa[$ja]=$Sa[$w];$Sa[$w]=$Li;$I.=chr(ord($P[$r])^($Sa[($Sa[$ja]+$Sa[$w])%256]));}if($Ff==='DECODE'){if(substr($I,0,8)==substr(md5(substr($I,8).$z),0,8)){return substr($I,8);}else{return'';}}else{return bin2hex(str_replace('=','',base64_encode($I)));}}function fun_adm_infolist(){$Kd=unserialize(fun_adm_lzw_decompress('78dacd59e9531bc915ffce5fd1ab8a575ed75812c2ec66c788ad3d5295ad642b4e39df1c8a1a660624accbd268599c4a9530f7295cdcb6b86cc0f8608417cc212154957f25d373fc1779dd3dd20c12729c4a3e045bb6a6e75dfdfa1dbfd7087cf00effb734ff35ef119291eed64020d0eab99be6ef04780fbe7882cfceacc535b350e08ca39251dad457b6f4a3257d6e575f3cd10f76f48559ad9c27f42efe76f2dc0a0b786c0d8feeeaebc3d6dabc76366b9e1c7d56471aac921ae5a74629af9d4d9be53253584fda4649db40eae8095687af27ba439edbeef01efdf9b1be7ca84fcce3a94dce983bc4f97d7c38668ebfc153fb78e214de11caaf1867329ca4c28384b3e31b786c410845e2623423c9dd89b828dff43e12a45824ee83451fbcf77e71979090cf6fe0050aa1b83c80fe4c696eb27764fd76a79888f7764ba9c8cf720a88bcb1c1f4a3a8f72e623f7e3fb25ebf078b386495564d75473b2b528a7afe9e7022ad10fed6e057be00fc69a532805f3b2be9f96224a94f2c9bd9519c3fc4eb59ce785bc0b99778ef096a6dbfe36b0ffada82be60806f6b0b7cd920392ec4e49a65528f6d1b48d6970ef559151717c8dff9595f036726cdf6944a2494da9608a7b1b8af4f9c024f034b5248a7ab2ce43b6303165c1833b6861ae8a309f121d02ba98c5c53c08c5b2de0f93d6b71088c33d58ab5a27ed3c01c4b4874674929e1984798cdca0609e0e5737c91abe34aa7a38428841e781fca83de50a7f7d62d2fe715e594e23c08f6d72e7ace20f0fefd3f3299d6e8ac5156dd9161cbcda4a28f32726a10cc11423d9f8b21a9b675adb26e2cad19cf468006e79e80dbeb99d31149ee1152dd623491965dee207e1b3db2560ef0e99e7979ae6fd5ef262ac4fb8807fa0597036c07ce8c63f519739d593830f7b375bc229c14e185ff93821276c72c9eda822cd5ceb2dad91bbcb36c0def53e2864df7a7a92bbdfd57255c2f82125fe3395188467b04f161776f262eb24025dfbc776b9bb0a53cdf300f87f178191c581f0a724fa6af318c982117593c5f004eb3b0a4ef6f374684124b4a111ae722ff5778703bc2addfb858c007abe669015f8e5cb30d7214dd24631e78ede3f47611a151b957a1e70a72dde7a95dbe8290d07339b37278555c2a432a0c6af663efe9d5b4599937b767089fab4646e292fc0bad91edc176a87552e4671491421e90dc0def3d9d1de136945606a372c81313527d91f86d2591e45120f9cb5d4fe70363a7a85d4e7719ef4b90dd1dfe705b2791d0d9d19b48c53a5b3a14f9174548c902828f94884707431e4f55da404452c23cfaea6b220a85e5485f58e15130c024df4877f8abdc9d1d917832a3206530097ce18824c9710ff27776f8a99a0e3f55d993224b1fb5d61a9f35f786baf0fb0d3dfb8a59ab083d51198951a83d214f3c31901292b06725059f709da5c1c08d1b208534c0f11cddae1226649d3857b0b293387b515da9636c0f5246b370acafce311a3fd5403e92bb23c0ba44d71ed0eacbc127a2c85db565e2e78d697cb1a42fcc391d82a7c48ca851306d158e60a8a042942c71a8d63b38a88079637f9a750b479d9e9fc553db786ddf6e23b0517cb6673793dce9ad5bb483f85c963832a99096ebec2141efd8631eef8128adb2ad0f151ccdb710ae8c5adba5a69b22cda25e08eb19ff8110d2ea1c2175fd8dc92119445d71b0c36a39010dea257c619bae31715a69d7caae103326c6ac678bfa62419f19c23b500dde3435807424c700e84b5c3c11779d3753e96e4f2e6040c81103610cc66817cff49759fdc334d34d0eb4b8e7d2dd60003437473bb4378eb4354e141c03ea1a99cfd7742ba4333bc24865e57a8568ba6133787e0e5ca89546219858b7f9b6fb87ef4869ab7ad2154f54c2951d90742559def98065ddff6532579bbbe30f5841466941df18c1072bc6bb3d578e4d4ee3d35dbb71d0cecf7a3e1c2dadad3c4a0a292124c9b1c4e7422c7957e89343ad01c8d8572ff1d8510d22e0b15f8d3743e04debc56a9333ba821a3ee5a818a6621d08da0f43141ced9a70366c9d6b7e586edda4db392ae53827c95cbfc03d0e738f075cbea05e309666acf5170c8338e25aaec813ddd94fc086be3cae954e208c58c37564422707f8c920c5f7f7ef33ba2656f6bb84f67fa2ccfef4474552a8f17167db6e76e10e1851cce1f2379fe65a86471c150c77e0dc146b1ef6269eabb8bce46a24f4593b3b809a015147180a1778bc085147d939c4b88d83c98f6eaf86621cfd786c94c40e052aae4d2e1d1aa51106a838044946cbe533b3326e56d6f04885451cbc5137603863dc64645b3cf741a80fb15c6862c41544e8328442bf5a25a756ac6c996a11e620adbcc45e5bc3657081f9e22d3b53f3c3a9bebecb21a84fdac516ccaa5a71cc869333a3fac9077d32abe72759b782c060b9d7ac40a9937874bfcb3cd8c34fa7b4e2b4b57dfe6fcb9484c44414d0713ce469ab212582836e0bd1485f9c27e810aa0f8569f6db68242edfaec1a7368a7448d76ae5d1b7f77eb49e8fc1cccbfc6e77acd5829ecf32e338444676fa12266d636f483f78c14679ad54021f59eb1b2003ddfbd3fdbf1057662f7c0c6611f941de4e10f0300492ed9ffc2422233162e327f22156ef88a7a1ceeebcd28a73adfaca091cf4de131e09d5f19943f6382d26d9231c80b5360fcac11c401b5ab902a7e3286f03e56b2a0410339e4a64115bdb248b31c608470515333b83d56192ce2eb440ce1f700b993f41e95911cebbea1a5c2a9aaaaa5554128436bc6450d35594dc07ce52a78ba0a4b1359661fff58123518e2b728a9ce98d346a1269ec6ea30be7f78d6205cf8e1bc557c8c6ccb6d24c520ccbe2430f4ac4c568447cc800bebd7a530947d29cf746da7bdd3f5f786ce09dcef4c4228a07fd2c4433f00869612daa4c1b43e3ffb3add2f0b665c4d27dd712d34c405783bf363ad4e284fc188b9b2405564eac95639e7811c2101fe6e8d73f7c877efaa19d7e6d38e196ab8e764f194dd32f482d00e0495109640644123409d22e0f731015505fe9a884678a001399216499c51a442a89780af458e0fa3a04144ec9bd21cf8d34a0157a4fd5e1176c3b5a6ea1ea66dde6b92eb2a4448c5e64c16857cb25c85a7dfb2559fe2d234a24619ea2d75dbc07bf5f824ea4afece2ca0a59fb9287d8910445b61fecf326f781bca737138d56d7d5197de9983c80aa744ca8bd307ebd34d4ac3d718a89e4608ab88a3c0703bc07fde335024768c5b70082b4721eab3bc8b6ac57962552d5a9658156dec34a198338d0def4911c34069c9bb5f626ac854bd81b8fc05b3031f6c94ac8d3dd03bd09029e792fac2849deef1f1818f0090ae9573e113cd379f599389669a37e191052f148bc8f9a0e1b611509d69917d985c567d09c46f0c41aad66d797430fa9719e6a41f4f83c4d4a627528cf286198ca7b13cc92002cb5d021a47a0b49ef19debd302b732c44d81d230442f525f3131c37ab80a6fa5a2b6fd11271ae5d56007c330ea37804fd6d40eea17302d4ff035a94a5485acc3ce610681b88c4250ec9623a9c808a8ce7472076b58b21edec19b99c7d0bc12cc6d2801000030e97993203d4c0b0402d600af0e80988aeda66e487f05c099f1fc186f589a75ae99d95cfc24c4ee014adc7d07d8db512544e43dd36e6c77e1abcff280a25db2a968ce13d9fbd37322d2c9feb474bdaf926547ae85280e3d9f608b67803024df5502be7ecd6ad6e0078c0b34760a38f21090201cea6f996ea25d5a7dced5e7bb15b7fd762eb9a5986d67ab40f315acb715f4dc6c72f71fd7e0632ec718915927588ac5dca4570e2cef135c2aebd7df5fbafdcbd36bf7c75713857afa89ea73ad8a0abd7967ebf3db9cc6d82e1b599c4c5fdb13b2ad048efa7580570f49250a63e60708b95483cf11a76f4e30fbf332e96cdcba7786d9fde8acdc3b132d40c816ec2d49fdd64f1e0b3130fe09d3eb980670fa14a91cb39a8c2d4b3554df8f03d44126051ed7c02ea159e5de29093eb103a50df26e6e1509f1fc34c4f74b23730b49d4fb2d8d737778dfc3461a205d65713adae92689d82432d18973b3c6afbf2ebf63b6dadad37effdfe1e092646a01577f40f4340f085cf2ee0145cf70bd5d20c4559cfbf33df6cfc734875533c0e5729c070adbc00e906165ca118a8519c0f596f171b2924b9d6002e4ff1f3b27ef0b28ec26911e6f47b18ce1c0a522e19f6ea965329ca431a028357ec9732363643ece68a413416981ca37330985d0f287a62bf28e291dd56c0b58987356fb09b8e839790fa4e2f1b48d92634fd6dd3dfff054e1f0e0f'));return$Kd;}function fun_adm_csp(){return array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".fun_adm_get_nonce()."' 'strict-dynamic'","connect-src"=>"'self'","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function fun_adm_get_nonce(){static$lf;if(!$lf){$lf=base64_encode(fun_adm_rand_string());}return$lf;}function fun_adm_page_header($Gi,$l="",$Ta=array(),$Hi=""){global$ca,$b,$x,$ia,$T;$F=fun_adm_object();fun_adm_page_headers();if(fun_adm_is_ajax()&&$l){fun_adm_page_messages($l);exit();}$Ii=$Gi.($Hi!=""?": $Hi":"");$Ji=strip_tags($Ii.($F->conf_dbhost!=''&&$F->conf_dbhost!='localhost'?fun_adm_h(" - ".$F->conf_dbhost):'').' - '.$b->name());echo'<!DOCTYPE html>
<html lang="',$ca,'" dir="',fun_adm_lang(228),'">
<head>
<meta charset="utf-8" />
<meta name="robots" content="noindex" />
<meta name="referrer" content="origin-when-crossorigin" />
<title>',$Ji,'</title>
<script type="text/javascript" src="',fun_adm_incl('functions.js'),'"></script>
<script type="text/javascript" src="',fun_adm_incl('jquery-min.js'),'"></script>
<script type="text/javascript" src="',fun_adm_incl('adminers.js'),'"></script>
<link rel="stylesheet" type="text/css" href="',fun_adm_incl('default.css'),'" />
';if($b->head()){echo' 
<link rel="shortcut icon" type="image/x-icon" href="',fun_adm_incl('favicon.ico'),'" />
<link rel="apple-touch-icon" href="',fun_adm_incl('favicon.ico'),'" />
';}if(!$b->isUser()){echo'<style type="text/css">
#index_show{overflow: hidden; padding: 3px; padding-left: 0px;}
#content{padding: 0px; margin-top: 166px; height: auto; background:url(\'',fun_adm_incl('wap_page_bg.png'),'\');}
#userlogin{padding: 0px; margin: 0;border-collapse: collapse; width: 100%; border: none; }
#userlogin td{padding: 6px; border: none; padding-left: 0px;}
.leftinfo{margin-top: 128px;}
body{background:url(\'',fun_adm_incl('wap_page_bg.png'),'\'); margin: 0; padding: 0; width: 100%; height: 100%;}
</style>
';}else if($_SERVER['VAR']['is_sidebar']!=='true'){echo'<style type="text/css">
#menu{display: none;}
#content{margin-left: 6px;}
#breadcrumb p.menu_right{margin-left:0px;}
#msg_debug{margin-left: 6px;}
</style>
';}echo'<script type="text/javascript">
    var is_sidebar = (\'',$_SERVER['VAR']['is_sidebar'];?>' == 'true'? true:false);
    var this_url = '<?php echo ADM_ME,'\';
    var version = \'',$ia,'\';
</script>
',fun_adm_jscss(),'</head>
<body class="',fun_adm_lang(228),' nojs" onkeydown="bodyKeydown(event);" onclick="bodyClick(event);">
<div id="help" class="jush-',$x,' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div>
<div id="content">
';if($Ta!==null){echo'<div id="breadcrumb">';$A=ADM_URL;$Eh=($F->conf_dbhost!=''?fun_adm_h($F->conf_dbhost):fun_adm_lang(47));echo'<p class="menu_right">'.$F->def_lang_in('sidebar').'</p>','<p class="menu_left">';if($Ta===false){echo" <a href='".($A?fun_adm_h($A):".")."' title='$Eh'>$Eh</a>";}else{echo" <a href='".($A?fun_adm_h($A):".")."' title='$Eh'>$Eh</a> &raquo; ";if($_GET['ns']||(ADM_DB&&is_array($Ta))){echo'<a href="'.fun_adm_h($A."db=".urlencode(ADM_DB)).'">'.fun_adm_h(ADM_DB).'</a> &raquo; ';}if(is_array($Ta)){if($_GET["ns"]!=""){echo'<a href="'.fun_adm_h(substr(ADM_ME,0,-1)).'">'.fun_adm_h($_GET["ns"]).'</a> &raquo; ';}foreach($Ta as$z=>$X){$Xb=(is_array($X)?$X[1]:fun_adm_h($X));if($Xb!=""){echo"<a href='".fun_adm_h(ADM_ME."$z=").urlencode(is_array($X)?$X[0]:$X)."'>$Xb</a> &raquo; ";}}}if($Gi)echo'<a href="'.ADM_THIS_URL.'">'.$Gi.'</a>';}$hi=fun_adm_get_databases(true);echo'</p><form style="float: right; padding: 0px; margin: 0px; margin-right: 6px;" action="" class="menu_right_logout" enctype="application/x-www-form-urlencoded" method="post">
            <input type="submit" name="logout" title="',fun_adm_lang(229),'" value="" id="logout" />
            <input type="hidden" name="token" value="',$T,'" />
       </form>
       
        ';if(ADM_DB){$qi=fun_adm_tables_list();echo'        <form style="float: right; padding: 0px; margin: 0px; margin-right: 6px;" action="" class="menu_right_logout" enctype="application/x-www-form-urlencoded" method="post">
        <select name="tables" onchange="adm_table_link(\'',ADM_ME,'\', this.value)" style="border: none;">
       
        ';if(!$_GET['select']){echo'<option value="">'.fun_adm_lang(230).fun_adm_lang(44).fun_adm_lang(17).'</option>';}$Mf=max($_GET['select'],$_GET['edit'],$_GET['table'],$_GET['create'],$_GET['sql']);fun_adm_set_session('sel_table',$Mf);foreach($qi AS$y=>$W){$Yh='';if($y===$Mf){$Yh=' selected="selected" ';}echo"<option {$Yh} value=\"{$y}\">{$y}</option>";}echo'        </select>
        </form>';}?><form style="float: right; padding: 0px; margin: 0px; margin-right: 6px;" action="" class="menu_right_logout" enctype="application/x-www-form-urlencoded" method="post"><select name="db" onmousedown='dbMouseDown(event, this);' onchange='dbChange(this);' style="border: none;"><option selected="" value=""><?php echo fun_adm_lang(230).fun_adm_lang(40),'</option>
        ';foreach($hi AS$y=>$W){$Yh=' ';if($W==ADM_DB){$Yh=' selected="selected" ';}echo"<option{$Yh}value=\"{$W}\">{$W}</option>";}?><input type='hidden' value='<?php echo$T,'\' name="token" /></select></form><span class="clear"></span></div> <!--breadcrumb--> 
';}if($b->isUser()){echo"<h2 id=\"header_h2\">$Ii</h2>\n";}echo"<div id='ajaxstatus' class='jsonly hidden'></div>\n";fun_adm_page_messages($l);}function fun_adm_page_headers(){header('Content-Type: text/html; charset=utf-8');header('Cache-Control: no-cache');}function fun_adm_page_messages($l){$Xe=fun_adm_get_session('show_msg');if($Xe){fun_adm_un_session('show_msg');}if(!$l&&$Xe){echo"<div class=\"message\">".$Xe."</div>\n";}else{if($l){if(!is_string($l)){$l=json_encode((array)$l);}echo"<div class=\"error\">$l</div>\n";}}}function fun_adm_page_footer($af=''){global$b,$T,$ra;echo'</div>

<div id="menu">
    <div class="leftinfo">
    ';$b->navigation($af);$Ee=fun_adm_get_session('Longin_Info');if($Ee){$Ee=explode('~',$Ee);}else{$Ee=array(0=>'mysql',1=>'localhost',2=>'pdo');}if(!$b->isUser()){$Ce=((boolean)fun_adm_get_session('adm_logout'))?'<input name="login_api" type="submit" value="'.fun_adm_lang(231).'" />':'';echo'    <form enctype="application/x-www-form-urlencoded" action="" method="post">
    <table id="userlogin">
    <tr><td>',fun_adm_lang(232),'</td><td>
    <select name="driver" onchange="driver_onchange(this)">
    ';foreach($_SERVER['STYPE']AS$y=>$W){$xh=(($Ee[0]===$y)?' selected="selected"':"");echo'<option value="'.$y.'"'.$xh.'>'.$W.'</option>';}if(ADM_IS_PDO){$zb=($Ee[2]==='none'?' selected="selected"':'');$yb=($Ee[2]==='pdo'?' selected="selected"':'');}echo'    </select>
    
    ';if(ADM_IS_PDO){echo'    <select name="contype">
        <option value="pdo"',$yb,'>PDO</option>
        <option value="none"',$zb,'>None</option>
    </select>
    ';}echo'    </td></tr>
    <tr><td>',fun_adm_lang(47),'</td><td><input name="server" title="hostname[:port]" value="',$Ee[1],'" /></td></tr>
    <tr class="loghide"><td>',fun_adm_lang(0),'</td><td><input name="username" id="username" value="',fun_adm_get_session('username'),'" /></td></tr>
    <tr class="loghide"><td>',fun_adm_lang(1);?></td><td><input onfocus="this.type='password'" name="password" /></td></tr>
    <tr>
        <td colspan="2"><input type='submit' value='<?php echo fun_adm_lang(13),'\' /> ',$Ce,'</td>
    </tr>
    </table>
    <input type="hidden" name="token" value="',$T;?>" />
    </form>
    <script type="text/javascript">
    var username = document.getElementById('username');
    focus(username);
    function driver_onchange(obj){
       if($(obj).val() == 'sqlite'){
          $('input[name="server"]').prop('disabled',true);
       }else{
          $('input[name="server"]').prop('disabled',false);
       }
    }
    </script>
    <?php }else{fun_adm_switch_lang();echo'<script type="text/javascript">setupSubmitHighlight(document);</script>';}echo'    </div>    
</div>
';if($b->isUser()){$Gh='';$Gh.="SQL[".fun_adm_count($_SERVER['SQL'])."] info:\n";foreach($_SERVER['SQL']AS$z=>$X){$Gh.='  '.$X."\n";}$Gh.="Session info:\n";foreach($_SESSION[ADM_USER_SID]AS$y=>$X){if($y==='password'){$X='******';}if($y==='driver'){if($X==='server'){$X='mysql';}}if($y==='logintime'){$X=date('Y-m-d H:i:s',$X);}if($y==='db'&&!$X){$X=ADM_DB;}$Gh.='  '.$y.': '.json_encode($X)."\n";}$F=fun_adm_object();$_a=(array)$F;$Hh="Object info:\n";foreach($_a AS$y=>$X){if($y==='conf_dbpass'){$X='******';}if(stripos($y,'conf_isapi')!==false){continue;}if(is_array($X)){continue;}$X=var_export($X,true);$Hh.='  '.$y.': '.htmlspecialchars($X)."\n";}$ra=sprintf('%.3f',(microtime(true)-ADM_RUN_TIME));echo'
<div id="adm_footer">
    <div class="copyright">
            <span id="adm_log" title="',$F->conf_note['api_open'],'" style="float: left; color: #0080FF; cursor: pointer; display: block;">',sprintf($F->def_lang_in('copyright'),$ra),'</span>
            <span style="float: right;display: block;">
            <a id="adm_api" title="',$F->conf_note['api_dom'],'" href="',ADM_ME,'adm_api=1">API</a>
            </span>
            <span class="clear"></span>
    </div>
    <textarea style="display: none;">','ADM_URL:'.fun_adm_h(ADM_URL)."\n",'ADM_ME:'.fun_adm_h(ADM_ME)."\n",'ADM_DATA:'.ADM_USER_DATA."\n",'ADM_TYPE:'.(ADM_API?'INAPI':'DEFAULT')."\n",'ADM_GENERATION:'.date('Y-m-d H:i:s',ADM_VER_TIME)."\n",'ADM_TIME:'.date('Y-m-d H:i:s',ADM_TIME).'('.date_default_timezone_get()."/Unix)\n",'ADM_STATUS: '.sprintf('ISAPI:%d|IS_ONCE:%d|IS_LOCAL:%d|DEBUG:%d|API_LOGOUT:%d',fun_adm_constant('ADM_ISAPI'),fun_adm_constant('ADM_IS_ONCE'),fun_adm_constant('ADM_IS_LOCAL'),fun_adm_constant('ADM_DEBUG'),fun_adm_constant('ADM_API_LOGOUT'))."\n\n",fun_adm_h($Gh),fun_adm_h($Hh),'</textarea>
</div>
';}echo'</body></html>';}function fun_adm_int32($ff){while($ff>=2147483648){$ff-=4294967296;}while($ff<=-2147483649){$ff+=4294967296;}return(int)$ff;}function fun_adm_long2str($W,$Gj){$kh='';foreach($W as$X){$kh.=pack('V',$X);}if($Gj){return substr($kh,0,end($W));}return$kh;}function fun_adm_str2long($kh,$Gj){$W=array_values(unpack('V*',str_pad($kh,4*ceil(strlen($kh)/4),"\0")));if($Gj){$W[]=strlen($kh);}return$W;}function fun_adm_xxtea_mx($Mj,$Lj,$ei,$y){return fun_adm_int32((($Mj>>5&0x7FFFFFF)^$Lj<<2)+(($Lj>>3&0x1FFFFFFF)^$Mj<<4))^fun_adm_int32(($ei^$Lj)+($y^$Mj));}function fun_adm_encrypt_string($Yh,$z){if($Yh==""){return"";}$z=array_values(unpack("V*",pack("H*",md5($z))));$W=fun_adm_str2long($Yh,true);$ff=fun_adm_count($W)-1;$Mj=$W[$ff];$Lj=$W[0];$Ag=floor(6+52/($ff+1));$ei=0;while($Ag-->0){$ei=fun_adm_int32($ei+0x9E3779B9);$kc=$ei>>2&3;for($Yf=0;$Yf<$ff;$Yf++){$Lj=$W[$Yf+1];$ef=fun_adm_xxtea_mx($Mj,$Lj,$ei,$z[$Yf&3^$kc]);$Mj=fun_adm_int32($W[$Yf]+$ef);$W[$Yf]=$Mj;}$Lj=$W[0];$ef=fun_adm_xxtea_mx($Mj,$Lj,$ei,$z[$Yf&3^$kc]);$Mj=fun_adm_int32($W[$ff]+$ef);$W[$ff]=$Mj;}return fun_adm_long2str($W,false);}function fun_adm_decrypt_string($Yh,$z){if($Yh==""){return"";}if(!$z){return false;}$z=array_values(unpack("V*",pack("H*",md5($z))));$W=fun_adm_str2long($Yh,false);$ff=fun_adm_count($W)-1;$Mj=$W[$ff];$Lj=$W[0];$Ag=floor(6+52/($ff+1));$ei=fun_adm_int32($Ag*0x9E3779B9);while($ei){$kc=$ei>>2&3;for($Yf=$ff;$Yf>0;$Yf--){$Mj=$W[$Yf-1];$ef=fun_adm_xxtea_mx($Mj,$Lj,$ei,$z[$Yf&3^$kc]);$Lj=fun_adm_int32($W[$Yf]-$ef);$W[$Yf]=$Lj;}$Mj=$W[$ff];$ef=fun_adm_xxtea_mx($Mj,$Lj,$ei,$z[$Yf&3^$kc]);$Lj=fun_adm_int32($W[0]-$ef);$W[0]=$Lj;$ei=fun_adm_int32($ei-0x9E3779B9);}return fun_adm_long2str($W,true);}function fun_adm_default_value($m){$Ub=$m["default"];return($Ub===null?"":" DEFAULT ".(preg_match('~char|binary|text|enum|set~',$m["type"])||preg_match('~^(?![a-z])~i',$Ub)?fun_adm_q($Ub):$Ub));}function fun_adm_select($I,$g=null,$Qf=array(),$_=0){global$x;$_e=array();$v=array();$e=array();$Pa=array();$V=array();$J=array();fun_adm_odd('');for($r=0;(!$_||$r<$_)&&($K=$I->fetch_row());$r++){if(!$r){echo"<table cellspacing='0' class='nowrap'>\n","<thead><tr>";for($w=0;$w<fun_adm_count($K);$w++){$m=$I->fetch_field();if(!isset($m->table)){$m->table='';}$E=$m->name;$Pf=$m->orgtable;$Of=$m->orgname;$J[$m->table]=$Pf;if($Qf&&$x=="sql"){$_e[$w]=($E=="table"?"table=":($E=="possible_keys"?"indexes=":null));}elseif($Pf!=""){if(!isset($v[$Pf])){$v[$Pf]=array();foreach(fun_adm_indexes($Pf,$g)as$u){if($u["type"]=="PRIMARY"){$v[$Pf]=array_flip($u["columns"]);break;}}$e[$Pf]=$v[$Pf];}if(isset($e[$Pf][$Of])){unset($e[$Pf][$Of]);$v[$Pf][$Of]=$w;$_e[$w]=$Pf;}}if($m->charsetnr==63){$Pa[$w]=true;}if(!isset($m->type)){$m->type='';}$V[$w]=$m->type;echo"<th".($Pf!=""||$m->name!=$Of?" title='".fun_adm_h(($Pf!=""?"$Pf.":"").$Of)."'":"").">".fun_adm_h($E).($Qf?fun_adm_doc_link(array('sql'=>"explain-output.html#explain_".strtolower($E))):"");}echo"</thead>\n";}echo"<tr".fun_adm_odd().">";foreach($K as$z=>$X){if($X===null){$X="<i>NULL</i>";}elseif($Pa[$z]&&!fun_adm_is_utf8($X)){$X="<i>".fun_adm_lang(233,strlen($X))."</i>";}else{$X=fun_adm_h($X);if($V[$z]==254){$X="<code>$X</code>";}}if(isset($_e[$z])&&!$e[$_e[$z]]){if($Qf&&$x=="sql"){$Q=$K[array_search("table=",$_e)];$A=$_e[$z].urlencode($Qf[$Q]!=""?$Qf[$Q]:$Q);}else{$A="edit=".urlencode($_e[$z]);foreach($v[$_e[$z]]as$hb=>$w){$A.="&where".urlencode("[".fun_adm_bracket_escape($hb)."]")."=".urlencode($K[$w]);}}$X="<a href='".fun_adm_h(ADM_ME.$A)."'>$X</a>";}echo"<td>$X";}}echo($r?"</table>":"<p class='message'>".fun_adm_lang(174))."\n";return$J;}function fun_adm_referencable_primary($_h){$J=array();foreach(fun_adm_table_status('',true)as$ki=>$Q){if($ki!=$_h&&fun_adm_fk_support($Q)){foreach(fun_adm_fields($ki)as$m){if($m["primary"]){if($J[$ki]){unset($J[$ki]);break;}$J[$ki]=$m;}}}}return$J;}function fun_adm_textarea($E,$Y,$L=10,$mb=80){global$x;echo"<textarea name='$E' rows='$L' cols='$mb' class='sqlarea jush-$x' spellcheck='false' wrap='off'>";if(is_array($Y)){foreach($Y as$X){echo fun_adm_h($X[0])."\n\n\n";}}else{echo fun_adm_h($Y);}echo"</textarea>";}function fun_adm_edit_type($z,$m,$kb,$hd=array()){global$ai,$V,$kj,$Cf;$U=$m["type"];$z=fun_adm_h($z);echo'<td><select name="',fun_adm_h($z),'[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"',fun_adm_on_help("getTarget(event).value",1),' aria-labelledby="label-type">';if($U&&!isset($V[$U])&&!isset($hd[$U])){array_unshift($ai,$U);}if($hd){$ai[fun_adm_lang(26)]=$hd;}echo fun_adm_optionlist($ai,$U),'</select>
<td><input name="',fun_adm_h($z),'[length]" value="',fun_adm_h($m["length"]),'" size="3" onfocus="editingLengthFocus(this);"',(!$m["length"]&&preg_match('~var(char|binary)$~',$U)?" class='required'":""),' onchange="editingLengthChange(this);" onkeyup="this.onchange();" aria-labelledby="label-length" /><td class="options">';echo"<select name='$z"."[collation]'".(preg_match('~(char|text|enum|set)$~',$U)?"":" class='hidden'").'><option value="">('.fun_adm_lang(84).')'.fun_adm_optionlist($kb,$m["collation"]).'</select>',($kj?"<select name='$z"."[unsigned]'".(!$U||preg_match('~'.fun_adm_number_type().'~',$U)?"":" class='hidden'").'><option>'.fun_adm_optionlist($kj,$m["unsigned"]).'</select>':''),(isset($m['on_update'])?"<select name='$z"."[on_update]'".(preg_match('~timestamp|datetime~',$U)?"":" class='hidden'").'>'.fun_adm_optionlist(array(""=>"(".fun_adm_lang(30).")","CURRENT_TIMESTAMP"),$m["on_update"]).'</select>':''),($hd?"<select name='$z"."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".fun_adm_lang(29).")".fun_adm_optionlist(explode("|",$Cf),$m["on_delete"])."</select> ":" ");}function fun_adm_process_length($ue){global$vc;return(preg_match("~^\\s*\\(?\\s*$vc(?:\\s*,\\s*$vc)*+\\s*\\)?\\s*\$~",$ue)&&preg_match_all("~$vc~",$ue,$Ke)?"(".implode(",",$Ke[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$ue)));}function fun_adm_process_type($m,$ib="COLLATE"){global$kj;return" $m[type]".fun_adm_process_length($m["length"]).(preg_match('~'.fun_adm_number_type().'~',$m["type"])&&in_array($m["unsigned"],$kj)?" $m[unsigned]":"").(preg_match('~char|text|enum|set~',$m["type"])&&$m["collation"]?" $ib ".fun_adm_q($m["collation"]):"");}function fun_adm_process_field($m,$bj){global$x;$Ub=$m["default"];return array(fun_adm_idf_escape(trim($m["field"])),fun_adm_process_type($bj),($m["null"]?" NULL":" NOT NULL"),fun_adm_default_value($m),(preg_match('~timestamp|datetime~',$m["type"])&&$m["on_update"]?" ON UPDATE $m[on_update]":""),(fun_adm_support("comment")&&$m["comment"]!=""?" COMMENT ".fun_adm_q($m["comment"]):""),($m["auto_increment"]?fun_adm_auto_increment():null),);}function fun_adm_type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$z=>$X){if(preg_match("~$z|$X~",$U)){return" class='$z'";}}}function fun_adm_edit_fields($n,$kb,$U="TABLE",$hd=array(),$qb=false){global$f,$Nd;$n=array_values($n);echo'<thead><tr class="wrap">
';if($U=="PROCEDURE"){echo'<td>';}echo'<th id="label-name">',($U=="TABLE"?fun_adm_lang(234):fun_adm_lang(235)),'<td id="label-type">',fun_adm_lang(20),'<textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;" onblur="editingLengthBlur(this);"></textarea>
<td id="label-length">',fun_adm_lang(2),'<td>',fun_adm_lang(236);if($U=="TABLE"){echo'<td id="label-null">NULL
<td><input type="radio" name="auto_increment_col" value="" /><acronym id="label-ai" title="',fun_adm_lang(21),'">AI</acronym>',fun_adm_doc_link(array('sql'=>"example-auto-increment.html",'sqlite'=>"autoinc.html",'pgsql'=>"datatype.html#DATATYPE-SERIAL",'mssql'=>"ms186775.aspx",)),'<td id="label-default">',fun_adm_lang(237),(fun_adm_support("comment")?"<td id='label-comment'".($qb?"":" class='hidden'").">".fun_adm_lang(18):"");}echo'<td>',"<input type='image' class='icon' name='add[".(fun_adm_support("move_col")?0:fun_adm_count($n))."]' src='".fun_adm_incl('plus.gif')."' alt='+' title='".fun_adm_lang(96)."'>",'<script type="text/javascript">row_count = ',fun_adm_count($n),';</script>
</thead>
<tbody onkeydown="return editingKeydown(event);">
';foreach($n as$r=>$m){$r++;$Rf=$m[($_POST?"orig":"field")];$ac=(isset($_POST["add"][$r-1])||(isset($m["field"])&&!$_POST["drop_col"][$r]))&&(fun_adm_support("drop_col")||$Rf=="");echo'<tr',($ac?"":" style='display: none;'"),'>
',($U=="PROCEDURE"?"<td>".fun_adm_html_select("fields[$r][inout]",explode("|",$Nd),$m["inout"]):""),'<th>';if($ac){echo'<input name="fields[',$r,'][field]" value="',fun_adm_h($m["field"]),'" onchange="editingNameChange(this);',($m["field"]!=""||fun_adm_count($n)>1?'':' editingAddRow(this);" onkeyup="if (this.value) editingAddRow(this);'),'" maxlength="64" autocapitalize="off" aria-labelledby="label-name" />';}echo'<input type="hidden" name="fields[',$r,'][orig]" value="',fun_adm_h($Rf),'" />
';fun_adm_edit_type("fields[$r]",$m,$kb,$hd);if($U=="TABLE"){echo'<td>',fun_adm_checkbox("fields[$r][null]",1,$m["null"],"","","block","label-null"),'<td><label class="block"><input type="radio" name="auto_increment_col" value="',$r,'"';if($m["auto_increment"]){echo' checked';}?> onclick="var field = this.form['fields[' + this.value + '][field]']; if (!field.value) { field.value = 'id'; field.onchange(); }" aria-labelledby="label-ai" /></label><td><?php
echo fun_adm_checkbox("fields[$r][has_default]",1,$m["has_default"],"","","","label-default"),'<input name="fields[',$r,'][default]" value="',fun_adm_h($m["default"]),'" onkeyup="keyupChange.call(this);" onchange="this.previousSibling.checked = true;" aria-labelledby="label-default" />
',(fun_adm_support("comment")?"<td".($qb?"":" class='hidden'")."><input name='fields[$r][comment]' value='".fun_adm_h($m["comment"])."' maxlength='".($f->server_info>=5.5?1024:255)."' aria-labelledby='label-comment'>":"");}echo"<td>",(fun_adm_support("move_col")?"<input type='image' class='icon' name='add[$r]' src='".fun_adm_incl('plus.gif')."' alt='+' title='".fun_adm_lang(96)."' onclick='return !editingAddRow(this, 1);'>"."<input type='image' class='icon' name='up[$r]' src='".fun_adm_incl('up.gif')."' alt='^' title='".fun_adm_lang(238)."'>"."<input type='image' class='icon' name='down[$r]' src='".fun_adm_incl('down.gif')."' alt='v' title='".fun_adm_lang(239)."'>":""),($Rf==""||fun_adm_support("drop_col")?"<input type='image' class='icon' name='drop_col[$r]' src='".fun_adm_incl('cross.gif')."' alt='x' title='".fun_adm_lang(98)."' onclick=\"return !editingRemoveRow(this, 'fields\$1[field]');\">":""),"\n";}}function fun_adm_process_fields(&$n){ksort($n);$wf=0;if($_POST["up"]){$ne=0;foreach($n as$z=>$m){if(key($_POST["up"])==$z){unset($n[$z]);array_splice($n,$ne,0,array($m));break;}if(isset($m["field"])){$ne=$wf;}$wf++;}}elseif($_POST["down"]){$jd=false;foreach($n as$z=>$m){if(isset($m["field"])&&$jd){unset($n[key($_POST["down"])]);array_splice($n,$wf,0,array($jd));break;}if(key($_POST["down"])==$z){$jd=$m;}$wf++;}}elseif($_POST["add"]){$n=array_values($n);array_splice($n,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"]){return false;}return true;}function fun_adm_normalize_enum($C){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($C[0][0].$C[0][0],$C[0][0],substr($C[0],1,-1))),'\\'))."'";}function fun_adm_grant($qd,$xg,$e,$Bf){if(!$xg){return true;}if($xg==array("ALL PRIVILEGES","GRANT OPTION")){return($qd=="GRANT"?fun_adm_queries("$qd ALL PRIVILEGES$Bf WITH GRANT OPTION"):fun_adm_queries("$qd ALL PRIVILEGES$Bf")&&fun_adm_queries("$qd GRANT OPTION$Bf"));}return fun_adm_queries("$qd ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$xg).$e).$Bf);}function fun_adm_drop_create($ec,$h,$fc,$yi,$hc,$B,$We,$Ue,$Ve,$zf,$jf){if($_POST["drop"]){fun_adm_query_redirect($ec,$B,$We);}elseif($zf==""){fun_adm_query_redirect($h,$B,$Ve);}elseif($zf!=$jf){$Db=fun_adm_queries($h);fun_adm_queries_redirect($B,$Ue,$Db&&fun_adm_queries($ec));if($Db){fun_adm_queries($fc);}}else{fun_adm_queries_redirect($B,$Ue,fun_adm_queries($yi)&&fun_adm_queries($hc)&&fun_adm_queries($ec)&&fun_adm_queries($h));}}function fun_adm_create_trigger($Bf,$K){global$x;$Fi=" $K[Timing] $K[Event]".($K["Event"]=="UPDATE OF"?" ".fun_adm_idf_escape($K["Of"]):"");return"CREATE TRIGGER ".fun_adm_idf_escape($K["Trigger"]).($x=="mssql"?$Bf.$Fi:$Fi.$Bf).rtrim(" $K[Type]\n$K[Statement]",";").";";}function fun_adm_create_routine($gh,$K){global$Nd;$N=array();$n=(array)$K["fields"];ksort($n);foreach($n as$m){if($m["field"]!=""){$N[]=(preg_match("~^($Nd)\$~",$m["inout"])?"$m[inout] ":"").fun_adm_idf_escape($m["field"]).fun_adm_process_type($m,"CHARACTER SET");}}return"CREATE $gh ".fun_adm_idf_escape(trim($K["name"]))." (".implode(", ",$N).")".(isset($_GET["function"])?" RETURNS".fun_adm_process_type($K["returns"],"CHARACTER SET"):"").($K["language"]?" LANGUAGE $K[language]":"").rtrim("\n$K[definition]",";").";";}function fun_adm_remove_definer($H){return preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',fun_adm_logged_user()).'`~','\1',$H);}function fun_adm_format_foreign_key($p){global$Cf;return" FOREIGN KEY (".implode(", ",array_map('fun_adm_idf_escape',$p["source"])).") REFERENCES ".fun_adm_table($p["table"])." (".implode(", ",array_map('fun_adm_idf_escape',$p["target"])).")".(preg_match("~^($Cf)\$~",$p["on_delete"])?" ON DELETE {$p['on_delete']}":"").(preg_match("~^($Cf)\$~",$p["on_update"])?" ON UPDATE {$p['on_update']}":"");}function fun_adm_tar_file($Wc,$Ni){$J=pack("a100a8a8a8a12a12",$Wc,644,0,0,decoct($Ni->size),decoct(time()));$eb=8*32;for($r=0;$r<strlen($J);$r++){$eb+=ord($J[$r]);}$J.=sprintf("%06o",$eb)."\0 ";echo$J,str_repeat("\0",512-strlen($J));$Ni->send();echo str_repeat("\0",511-($Ni->size+511)%512);}function fun_adm_ini_bytes($Md){$X=ini_get($Md);$yj=intval($X);switch(strtolower(substr($X,-1))){case'g':$yj*=1024;case'm':$yj*=1024;case'k':$yj*=1024;}return$yj;}function fun_adm_doc_link($jg){global$x,$f;$pj=array('sql'=>"http://dev.mysql.com/doc/refman/".substr($f->server_info,0,3)."/en/",'sqlite'=>"http://www.sqlite.org/",'pgsql'=>"http://www.postgresql.org/docs/".substr($f->server_info,0,3)."/static/",'mssql'=>"http://msdn.microsoft.com/library/",'oracle'=>"http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/",);return($jg[$x]?"<a href='$pj[$x]$jg[$x]' target='_blank' rel='noreferrer'><sup>?</sup></a>":"");}function fun_adm_ob_gzencode($P){return gzencode($P);}function fun_adm_db_size($k){global$f;if(!$f->select_db($k)){return"?";}$J=0;foreach(fun_adm_table_status()as$R){$J+=$R["Data_length"]+$R["Index_length"];}return fun_adm_format_number($J);}function fun_adm_set_utf8mb4($h){global$f;static$N=false;if(!$N&&preg_match('~\butf8mb4~i',$h)){$N=true;echo"SET NAMES ".fun_adm_charset($f).";\n\n";}}function fun_adm_connect_error(){global$b,$f,$T,$l;if(ADM_DB!==''){header("HTTP/1.1 404 Not Found");fun_adm_page_header(fun_adm_lang(40).": ".fun_adm_h(ADM_DB),fun_adm_lang(240),true);}else{if(isset($_POST["db"])&&$_POST["db"]&&!$l){fun_adm_queries_redirect(substr(ADM_ME,0,-1),fun_adm_lang(241),fun_adm_drop_databases($_POST["db"]));}fun_adm_page_header(fun_adm_lang(40).''.fun_adm_lang(10),$l,false);$b->homepage('def');$F=fun_adm_object();$Ei=0;if(in_array($F->conf_lang,array('zh','zw'))){$Ei=8;}elseif($F->conf_lang==='ja'){$Ei=9;}elseif($F->conf_lang==='de'){$Ei=1;}$mg=fun_adm_h(ADM_ME.'adm_api=phpinfo');echo"<p style=\"line-height: 1.5em;\">".fun_adm_lang(242,$_SERVER['STYPE'][ADM_DRIVER],"<strong>".fun_adm_h($f->server_info)."</strong>, Qadmin: <strong>".ADM_VERSION."</strong>, PHP: <strong>".phpversion()."</strong>","<strong><a title=\"show phpinfo\" href=\"{$mg}\">".$f->extension."</a></strong>, IP: <strong>{$_SERVER['REMOTE_ADDR']}</strong>")."<br />\n";if(stripos(PHP_SAPI,'apache')!==false)echo' ServerInfo: '.apache_get_version().'<br />';if(ADM_API){$ya=fun_adm_lang(231);}else{$ya=fun_adm_lang(243);}echo"".fun_adm_lang(244,'<strong>'.(fun_adm_logged_user())."</strong> ").'('.date('Y-m-d H:i:s',fun_adm_get_session('logintime')+$Ei*3600).") {$ya}</strong></p>\n";$j=$b->databases();if($j){$uh=fun_adm_support("scheme");$kb=fun_adm_collations();echo"<form action='' enctype=\"application/x-www-form-urlencoded\" method='post'>\n","<table cellspacing='0' class='checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n","<thead><tr class=\"wrap\">".(fun_adm_support("database")?'<th><input id="check-all" type="checkbox" onclick="formCheck(this, /^(db|views)\[/);" /> '.fun_adm_count($j):"")."<th>".fun_adm_lang(40)." - <a href='".fun_adm_h(ADM_ME)."refresh=1'>".fun_adm_lang(86)."</a>"."<td>".fun_adm_lang(194)."<td>".fun_adm_lang(43)."<td>".fun_adm_lang(45)."</thead>\n";if($j)$j=(isset($_GET['dbsize'])?fun_adm_count_tables($j):array_flip($j));$Rb=isset($_GET["dbsize"])?$_GET["dbsize"]:'';foreach($j as$k=>$S){$fh=fun_adm_h(ADM_ME)."db=".urlencode($k);$Lb=isset($_POST["db"])?$_POST["db"]:array();$s=fun_adm_h("Db-".$k);echo"<tr".fun_adm_odd().">".(fun_adm_support("database")?"<td>".fun_adm_checkbox("db[]",$k,in_array($k,(array)$_POST["db"]),"","","",$s):""),"<th><a href='$fh' id='$s'>".fun_adm_h($k)."</a>";$jb=fun_adm_nbsp(fun_adm_db_collation($k,$kb));echo"<td>".(fun_adm_support("database")?"<a title='".fun_adm_lang(103)."'>$jb</a>":$jb),"<td><a href='$fh&amp;schema=' id='tables-".fun_adm_h($k)."' title='".fun_adm_lang(35)."'>".($Rb?$S:"..")."</a>","<td id='size-".fun_adm_h($k)."'>".($Rb?fun_adm_db_size($k):".."),"\n";}echo"</table>\n",(fun_adm_support("database")?"<fieldset><legend>".fun_adm_lang(182)." <span id='selected'></span></legend><div>\n"."<input type='submit' class='adm_refresh' value='".fun_adm_lang(86)."' /> "."<input type='submit' name='drop' value='".fun_adm_lang(87)."'".fun_adm_confirm().">\n"."</div></fieldset>\n":""),"<script type='text/javascript'>tableCheck();ajaxSetHtml('".fun_adm_js_escape(ADM_ME)."script=connect&adm_rand=".urlencode(microtime(true))."');</script>\n","<input type='hidden' name='token' value='$T'>\n","</form>\n";}}fun_adm_page_footer('db');}if(fun_adm_constant('ADM_IS_PDO')){class Cls_Adm_Min_PDO extends PDO{public$_result;public$server_info;public$affected_rows=0;public$errno;public$error;function __construct(){global$b;$qg=array_search('SQL',$b->operators);if($qg!==false){unset($b->operators[$qg]);}}function dsn($ic,$vj,$hg){try{parent::__construct($ic,$vj,$hg);}catch(Exception$Dc){fun_adm_set_session('linkmsg',mb_convert_encoding(fun_adm_h($Dc->getMessage()),'utf-8','gbk'));return false;}$this->setAttribute(13,array('Cls_Adm_Min_PDOStatement'));$this->server_info=@$this->getAttribute(4);return true;}function query($H,$ej=false){$I=parent::query($H);$this->error='';if(!$I){list(,$this->errno,$this->error)=parent::errorInfo();return false;}$this->store_result($I);return$I;}function multi_query($H){return$this->_result=$this->query($H);}function store_result($I=null){if(!$I){$I=$this->_result;if(!$I){return false;}}$I->num_rows=$I->rowCount();$this->affected_rows=$I->rowCount();return$I;}function next_result(){if(!$this->_result){return false;}$this->_result->_offset=0;return@$this->_result->nextRowset();}function result($H,$m=0){$I=$this->query($H);if(!$I){return false;}$K=$I->fetch();return$K[$m];}}class Cls_Adm_Min_PDOStatement extends PDOStatement{public$_offset=0;public$num_rows=0;function fetch_assoc(){return$this->fetch(2);}function fetch_row(){return$this->fetch(3);}function fetch_field(){$K=(object)$this->getColumnMeta($this->_offset++);$K->orgtable=$K->table;$K->orgname=$K->name;$Ca=isset($K->flags)?(array)$K->flags:array();$K->charsetnr=(in_array("blob",$Ca)?63:0);return$K;}}}class Cls_Adm_Min_SQL{public$_conn;public function __construct($f){$this->_conn=$f;}public function select($Q,$M,$Z,$sd,$Nf=array(),$_=1,$G=0,$vg=false){global$b,$x;$Sd=(fun_adm_count($sd)<fun_adm_count($M));$H=$b->selectQueryBuild($M,$Z,$sd,$Nf,$_,$G);if(!$H){$H="SELECT".fun_adm_limit(($_GET["page"]!="last"&&$_!=""&&$sd&&$Sd&&$x=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$M)."\nFROM ".fun_adm_table($Q),($Z?"\nWHERE ".implode(" AND ",$Z):"").($sd&&$Sd?"\nGROUP BY ".implode(", ",$sd):"").($Nf?"\nORDER BY ".implode(", ",$Nf):""),($_!=""?+$_:null),($G?$_*$G:0),"\n");}$Vh=microtime(true);$J=$this->_conn->query($H);if($vg){echo$b->selectQuery($H,fun_adm_format_time($Vh));}return$J;}public function delete($Q,$Cg,$_=0){$H="FROM ".fun_adm_table($Q);return fun_adm_queries("DELETE".($_?fun_adm_limit1($H,$Cg):" $H$Cg"));}public function update($Q,$N,$Cg,$_=0,$Ah="\n"){$_j=array();foreach($N as$z=>$X){$_j[]="$z = $X";}$H=fun_adm_table($Q)." SET$Ah".implode(",$Ah",$_j);return fun_adm_queries("UPDATE".($_?fun_adm_limit1($H,$Cg):" $H$Cg"));}public function insert($Q,$N){return fun_adm_queries("INSERT INTO ".fun_adm_table($Q).($N?" (".implode(", ",array_keys($N)).")\nVALUES (".implode(", ",$N).")":" DEFAULT VALUES"));}public function insertUpdate($Q,$L,$tg){return false;}public function begin(){return fun_adm_queries("BEGIN");}public function commit(){return fun_adm_queries("COMMIT");}public function rollback(){return fun_adm_queries("ROLLBACK");}public function slowQuery($H,$Di){}function convertSearch($t,$X,$m){return$t;}function value($X,$m){return(method_exists($this->_conn,'value')?$this->_conn->value($X,$m):(is_resource($X)?stream_get_contents($X):$X));}function quoteBinary($kh){return q($kh);}function warnings(){return'';}function tableHelp($E){}}function fun_adm_db_sqlite($Dg){static$r=0;if($r!==0){return true;}$r++;if($Dg==='pdo'&&ADM_IS_PDOSQLITE){class Cls_Adm_Min_SQLite extends Cls_Adm_Min_PDO{public$extension="PDO_SQLite";public function __construct($Wc){$this->dsn(ADM_DRIVER.":$Wc","","");}public function query($H,$ej=false){fun_adm_query($H);return parent::query($H);}}}else if(($ce=class_exists('SQLite3'))||class_exists('SQLiteDatabase')){if($ce){class Cls_Adm_Min_SQLite{public$extension="SQLite3";public$server_info;public$affected_rows;public$errno;public$error;public$_link;public function __construct($Wc){$this->_link=new SQLite3($Wc);$Cj=$this->_link->version();$this->server_info=$Cj['versionString'];}public function query($H){fun_adm_query($H);$I=@$this->_link->query($H);$this->error='';if(!$I){$this->errno=$this->_link->lastErrorCode();$this->error=$this->_link->lastErrorMsg();return false;}elseif($I->numColumns()){return new Cls_Adm_Min_Result($I);}$this->affected_rows=$this->_link->changes();return true;}public function quote($P){return(fun_adm_is_utf8($P)?"'".$this->_link->escapeString($P)."'":"x'".reset(unpack('H*',$P))."'");}public function store_result(){return$this->_result;}public function result($H,$m=0){$I=$this->query($H);if(!is_object($I)){return false;}$K=$I->_result->fetchArray();return$K[$m];}}class Cls_Adm_Min_Result{public$_result;public$_offset=0;public$num_rows;public function __construct($I){$this->_result=$I;}public function fetch_assoc(){return$this->_result->fetchArray(SQLITE3_ASSOC);}public function fetch_row(){return$this->_result->fetchArray(SQLITE3_NUM);}public function fetch_field(){$d=$this->_offset++;$U=$this->_result->columnType($d);return(object)array("name"=>$this->_result->columnName($d),"type"=>$U,"charsetnr"=>($U==SQLITE3_BLOB?63:0),);}public function __desctruct(){return$this->_result->finalize();}}}else{class Cls_Adm_Min_SQLite{public$extension="SQLite";public$server_info;public$affected_rows;public$error;public$_link;public function __construct($Wc){$this->server_info=sqlite_libversion();$this->_link=new SQLiteDatabase($Wc);}public function query($H,$ej=false){fun_adm_query($H);$Ye=($ej?"unbufferedQuery":"query");$I=@$this->_link->$Ye($H,SQLITE_BOTH,$l);$this->error="";if(!$I){$this->error=$l;return false;}elseif($I===true){$this->affected_rows=$this->changes();return true;}return new Cls_Adm_Min_Result($I);}public function quote($P){return"'".sqlite_escape_string($P)."'";}public function store_result(){return$this->_result;}public function result($H,$m=0){$I=$this->query($H);if(!is_object($I)){return false;}$K=$I->_result->fetch();return$K[$m];}}class Cls_Adm_Min_Result{public$_result;public$_offset=0;public$num_rows;public function __construct($I){$this->_result=$I;if(method_exists($I,'numRows')){$this->num_rows=$I->numRows();}}public function fetch_assoc(){$K=$this->_result->fetch(SQLITE_ASSOC);if(!$K){return false;}$J=array();foreach($K as$z=>$X){$J[($z[0]=='"'?fun_adm_idf_unescape($z):$z)]=$X;}return$J;}public function fetch_row(){return$this->_result->fetch(SQLITE_NUM);}public function fetch_field(){$E=$this->_result->fieldName($this->_offset++);$kg='(\[.*]|"(?:[^"]|"")*"|(.+))';if(preg_match("~^($kg\\.)?$kg\$~",$E,$C)){$Q=($C[3]!=""?$C[3]:fun_adm_idf_unescape($C[2]));$E=($C[5]!=""?$C[5]:fun_adm_idf_unescape($C[4]));}return(object)array("name"=>$E,"orgname"=>$E,"orgtable"=>$Q,);}}}}if(class_exists('Cls_Adm_Min_SQLite')){class Cls_Adm_Min_DB extends Cls_Adm_Min_SQLite{public function __construct(){parent::__construct(":memory:");}public function select_db($Wc){$Wc=fun_adm_get_path($Wc);if(!$Wc){return false;}if(is_readable($Wc)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$Wc)?$Wc:dirname($_SERVER["SCRIPT_FILENAME"])."/$Wc")." AS a")){parent::__construct($Wc);return true;}return false;}public function multi_query($H){return$this->_result=$this->query($H);}public function next_result(){return false;}}}class Cls_Adm_Min_Driver extends Cls_Adm_Min_SQL{public function insertUpdate($Q,$L,$tg){$_j=array();foreach($L as$N){$_j[]="(".implode(", ",$N).")";}return fun_adm_queries("REPLACE INTO ".fun_adm_table($Q)." (".implode(", ",array_keys(reset($L))).") VALUES\n".implode(",\n",$_j));}}function fun_adm_get_path($Wc){global$f;if(is_file($Wc)){return$Wc;}$ig=fun_adm_DATA();if(!$ig){$f->error='directory does not exist';return false;}return$ig.$Wc;}function fun_adm_idf_escape($t){return'"'.str_replace('"','""',$t).'"';}function fun_adm_table($t){return fun_adm_idf_escape($t);}function fun_adm_connect(){return new Cls_Adm_Min_DB();}function fun_adm_get_databases(){$Zb=fun_adm_DATA();$Og=array();if(is_dir($Zb)){$Nb=scandir($Zb);foreach($Nb AS$y=>$Lc){if($y==='.'||$y==='..'){continue;}if(check_sqlite_name($Lc)){$Og[]=$Lc;}}}if(ADM_DB_LOCK){foreach($Og AS$y=>$X){if(!in_array($X,$_SERVER['DB_LIST'])){unset($Og[$y]);}}}clearstatcache();return$Og;}function fun_adm_limit($H,$Z,$_,$wf=0,$Ah=" "){return" $H$Z".($_!==null?$Ah."LIMIT $_".($wf?" OFFSET $wf":""):"");}function fun_adm_limit1($H,$Z){global$f;return(preg_match('~^INTO~',$H)||$f->result("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?fun_adm_limit($H,$Z,1,0,$Ah):" $H WHERE rowid = (SELECT rowid FROM ".fun_adm_table($Q).$Z.$Ah."LIMIT 1)");}function fun_adm_db_collation($k,$kb){global$f;return$f->result("PRAGMA encoding");}function fun_adm_engines(){return array();}function fun_adm_logged_user(){$F=fun_adm_object();return fun_adm_h($F->conf_dbuser).' <a href="'.ADM_ME.'db=user.db&edit=user&where%5Buid%5D=1">'.fun_adm_lang(31).fun_adm_lang(1).'</a>';}function fun_adm_tables_list(){return fun_adm_get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') ORDER BY (name = 'sqlite_sequence'), name");}function fun_adm_count_tables($j){return array();}function fun_adm_table_status($E=""){global$f;$J=array();foreach(fun_adm_get_rows("SELECT name AS Name, type AS Engine FROM sqlite_master WHERE type IN ('table', 'view') ".($E!=""?"AND name = ".fun_adm_q($E):"ORDER BY name"))as$K){$K["Oid"]=1;$K["Auto_increment"]="";$K["Rows"]=$f->result("SELECT COUNT(*) FROM ".fun_adm_idf_escape($K["Name"]));$J[$K["Name"]]=$K;}foreach(fun_adm_get_rows("SELECT * FROM sqlite_sequence",null,"")as$K){$J[$K["name"]]["Auto_increment"]=$K["seq"];}return($E!=""?$J[$E]:$J);}function fun_adm_is_view($R){return$R["Engine"]=="view";}function fun_adm_fk_support($R){global$f;return!$f->result("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function fun_adm_fields($Q){global$f;$J=array();$tg="";foreach(fun_adm_get_rows("PRAGMA table_info(".fun_adm_table($Q).")")as$K){$E=$K["name"];$U=strtolower($K["type"]);$Ub=$K["dflt_value"];$J[$E]=array("field"=>$E,"type"=>(preg_match('~int~i',$U)?"integer":(preg_match('~char|clob|text~i',$U)?"text":(preg_match('~blob~i',$U)?"blob":(preg_match('~real|floa|doub~i',$U)?"real":"numeric")))),"full_type"=>$U,"default"=>(preg_match("~'(.*)'~",$Ub,$C)?str_replace("''","'",$C[1]):($Ub=="NULL"?null:$Ub)),"null"=>!$K["notnull"],"privileges"=>array("select"=>1,"insert"=>1,"update"=>1),"primary"=>$K["pk"],);if($K["pk"]){if($tg!=""){$J[$tg]["auto_increment"]=false;}elseif(preg_match('~^integer$~i',$U)){$J[$E]["auto_increment"]=true;}$tg=$E;}}$Rh=$f->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".fun_adm_q($Q));preg_match_all('~(("[^"]*+")+|[a-z0-9_]+)\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$Rh,$Ke,PREG_SET_ORDER);foreach($Ke as$C){$E=str_replace('""','"',preg_replace('~^"|"$~','',$C[1]));if($J[$E]){$J[$E]["collation"]=trim($C[3],"'");}}return$J;}function fun_adm_indexes($Q,$g=null){global$f;if(!is_object($g)){$g=$f;}$J=array();$Rh=$g->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".fun_adm_q($Q));if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$Rh,$C)){$J[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$C[1],$Ke,PREG_SET_ORDER);foreach($Ke as$C){$J[""]["columns"][]=fun_adm_idf_unescape($C[2]).$C[4];$J[""]["descs"][]=(preg_match('~DESC~i',$C[5])?'1':null);}}if(!$J){foreach(fun_adm_fields($Q)as$E=>$m){if($m["primary"]){$J[""]=array("type"=>"PRIMARY","columns"=>array($E),"lengths"=>array(),"descs"=>array(null));}}}$Sh=fun_adm_get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".fun_adm_q($Q),$g);foreach(fun_adm_get_rows("PRAGMA index_list(".fun_adm_table($Q).")",$g)as$K){$E=$K["name"];$u=array("type"=>($K["unique"]?"UNIQUE":"INDEX"));$u["lengths"]=array();$u["descs"]=array();foreach(fun_adm_get_rows("PRAGMA index_info(".fun_adm_idf_escape($E).")",$g)as$jh){$u["columns"][]=$jh["name"];$u["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(fun_adm_idf_escape($E).' ON '.fun_adm_idf_escape($Q),'~').' \((.*)\)$~i',$Sh[$E],$Vg)){preg_match_all('/("[^"]*+")+( DESC)?/',$Vg[2],$Ke);foreach($Ke[2]as$z=>$X){if($X){$u["descs"][$z]='1';}}}if(!$J[""]||$u["type"]!="UNIQUE"||$u["columns"]!=$J[""]["columns"]||$u["descs"]!=$J[""]["descs"]||!preg_match("~^sqlite_~",$E)){$J[$E]=$u;}}return$J;}function fun_adm_foreign_keys($Q){$J=array();foreach(fun_adm_get_rows("PRAGMA foreign_key_list(".fun_adm_table($Q).")")as$K){$p=&$J[$K["id"]];if(!$p){$p=$K;}$p["source"][]=$K["from"];$p["target"][]=$K["to"];}return$J;}function fun_adm_view($E){global$f;return array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU','',$f->result("SELECT sql FROM sqlite_master WHERE name = ".fun_adm_q($E))));}function fun_adm_collations(){return(isset($_GET["create"])?fun_adm_get_vals("PRAGMA collation_list",1):array());}function fun_adm_information_schema($k){return false;}function fun_adm_error(){global$f;return fun_adm_h($f->error);}function check_sqlite_name($E){global$f;$Kc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Kc)\$~",$E)){$f->error=fun_adm_lang(245,str_replace("|",", ",$Kc));return false;}return true;}function fun_adm_create_database($k,$jb){global$f;$k=fun_adm_get_path($k);if(!$k){return false;}if(file_exists($k)){$f->error=fun_adm_lang(65);return false;}if(!check_sqlite_name($k)){return false;}try{$A=new Cls_Adm_Min_SQLite($k);}catch(Exception$Dc){$f->error=$Dc->getMessage();return false;}$A->query('PRAGMA encoding = "UTF-8"');$A->query('CREATE TABLE "qadmin" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT)');$A->query('DROP TABLE qadmin');return true;}function fun_adm_drop_databases($j){global$f;$f->Cls_Adm_Min_SQLite(":memory:");foreach($j as$k){$k=fun_adm_get_path($k);if(!$k||!@unlink($k)){$f->error=fun_adm_lang(65);return false;}}return true;}function fun_adm_rename_database($E,$jb){global$f;$E=fun_adm_get_path($E);if(!$E){return false;}$k=fun_adm_get_path(ADM_DB);if(!$E){return false;}if(!check_sqlite_name($E)){return false;}$f->Cls_Adm_Min_SQLite(":memory:");$f->error=fun_adm_lang(65);return@rename($k,$E);}function fun_adm_auto_increment(){return" PRIMARY KEY".(ADM_DRIVER=='sqlite'?' AUTOINCREMENT':'');}function fun_adm_tableSTATUS($Q){return array();}function fun_adm_alter_table($Q,$E,$n,$fd,$pb,$tc,$jb,$Ha,$eg){$rj=($Q==""||$fd);foreach($n as$m){if($m[0]!=""||!$m[1]||$m[2]){$rj=true;break;}}$c=array();$Vf=array();foreach($n as$m){if($m[1]){$c[]=($rj?$m[1]:"ADD ".implode($m[1]));if($m[0]!=""){$Vf[$m[0]]=$m[1][0];}}}if(!$rj){foreach($c as$X){if(!fun_adm_queries("ALTER TABLE ".fun_adm_table($Q)." $X")){return false;}}if($Q!=$E&&!fun_adm_queries("ALTER TABLE ".fun_adm_table($Q)." RENAME TO ".fun_adm_table($E))){return false;}}elseif(!fun_adm_recreate_table($Q,$E,$c,$Vf,$fd)){return false;}if($Ha){fun_adm_queries("UPDATE sqlite_sequence SET seq = $Ha WHERE name = ".fun_adm_q($E));}return true;}function fun_adm_recreate_table($Q,$E,$n,$Vf,$fd,$v=array()){if($Q!=""){if(!$n){foreach(fun_adm_fields($Q)as$z=>$m){if($v){$m["auto_increment"]=0;}$n[]=fun_adm_process_field($m,$m);$Vf[$z]=fun_adm_idf_escape($z);}}$ug=false;foreach($n as$m){if($m[6]){$ug=true;}}$gc=array();foreach($v as$z=>$X){if($X[2]=="DROP"){$gc[$X[1]]=true;unset($v[$z]);}}foreach(fun_adm_indexes($Q)as$ee=>$u){$e=array();foreach($u["columns"]as$z=>$d){if(!$Vf[$d]){continue 2;}$e[]=$Vf[$d].($u["descs"][$z]?" DESC":"");}if(!$gc[$ee]){if($u["type"]!="PRIMARY"||!$ug){$v[]=array($u["type"],$ee,$e);}}}foreach($v as$z=>$X){if($X[0]=="PRIMARY"){unset($v[$z]);$fd[]="  PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(fun_adm_foreign_keys($Q)as$ee=>$p){foreach($p["source"]as$z=>$d){if(!$Vf[$d]){continue 2;}$p["source"][$z]=fun_adm_idf_unescape($Vf[$d]);}if(!isset($fd[" $ee"])){$fd[]=" ".fun_adm_format_foreign_key($p);}}fun_adm_queries("BEGIN");}foreach($n as$z=>$m){$n[$z]="  ".implode($m);}$n=array_merge($n,array_filter($fd));if(!fun_adm_queries("CREATE TABLE ".fun_adm_table($Q!=""?"qadmin_$E":$E)." (\n".implode(",\n",$n)."\n)")){return false;}if($Q!=""){if($Vf&&!fun_adm_queries("INSERT INTO ".fun_adm_table("qadmin_$E")." (".implode(", ",$Vf).") SELECT ".implode(", ",array_map('fun_adm_idf_escape',array_keys($Vf)))." FROM ".fun_adm_table($Q))){return false;}$aj=array();foreach(fun_adm_triggers($Q)as$Yi=>$Fi){$Xi=fun_adm_trigger($Yi);$aj[]="CREATE TRIGGER ".fun_adm_idf_escape($Yi)." ".implode(" ",$Fi)." ON ".fun_adm_table($E)."\n$Xi[Statement]";}if(!fun_adm_queries("DROP TABLE ".fun_adm_table($Q))){return false;}fun_adm_queries("ALTER TABLE ".fun_adm_table("qadmin_$E")." RENAME TO ".fun_adm_table($E));if(!fun_adm_alter_indexes($E,$v)){return false;}foreach($aj as$Xi){if(!fun_adm_queries($Xi)){return false;}}fun_adm_queries("COMMIT");}return true;}function fun_adm_index_sql($Q,$U,$E,$e){return"CREATE $U ".($U!="INDEX"?"INDEX ":"").fun_adm_idf_escape($E!=""?$E:uniqid($Q."_"))." ON ".fun_adm_table($Q)." $e";}function fun_adm_alter_indexes($Q,$c){foreach($c as$tg){if($tg[0]=="PRIMARY"){return fun_adm_recreate_table($Q,$Q,array(),array(),array(),$c);}}foreach(array_reverse($c)as$X){if(!fun_adm_queries($X[2]=="DROP"?"DROP INDEX ".fun_adm_idf_escape($X[1]):fun_adm_index_sql($Q,$X[0],$X[1],"(".implode(", ",$X[2]).")"))){return false;}}return true;}function fun_adm_truncate_tables($S){return fun_adm_apply_queries("DELETE FROM",$S);}function fun_adm_drop_views($Ej){return fun_adm_apply_queries("DROP VIEW",$Ej);}function fun_adm_drop_tables($S){return fun_adm_apply_queries("DROP TABLE",$S);}function fun_adm_move_tables($S,$Ej,$ui){return false;}function fun_adm_copy_tables($S,$Ej,$ui){}function fun_adm_trigger($E){global$f;if($E==""){return array("Statement"=>"BEGIN\n\t;\nEND");}$t='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$Zi=fun_adm_trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$t\\s*(".implode("|",$Zi["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($t))?\\s+ON\\s*$t\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",$f->result("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".fun_adm_q($E)),$C);$vf=$C[3];return array("Timing"=>strtoupper($C[1]),"Event"=>strtoupper($C[2]).($vf?" OF":""),"Of"=>($vf[0]=='`'||$vf[0]=='"'?fun_adm_idf_unescape($vf):$vf),"Trigger"=>$E,"Statement"=>$C[4],);}function fun_adm_triggers($Q){$J=array();$Zi=fun_adm_trigger_options();foreach(fun_adm_get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".fun_adm_q($Q))as$K){preg_match('~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*('.implode("|",$Zi["Timing"]).')\s*(.*)\s+ON\b~iU',$K["sql"],$C);$J[$K["name"]]=array($C[1],$C[2]);}return$J;}function fun_adm_trigger_options(){return array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE"),"Type"=>array("FOR EACH ROW"),);}function begin(){return fun_adm_queries("BEGIN");}function fun_adm_last_id(){global$f;return$f->result("SELECT LAST_INSERT_ROWID()");}function fun_adm_explain($f,$H){return$f->query("EXPLAIN QUERY PLAN $H");}function fun_adm_found_rows($R,$Z){}function fun_adm_types(){return array();}function fun_adm_schemas(){return array();}function fun_adm_get_schema(){return"";}function fun_adm_set_schema($uh){return true;}function fun_adm_create_sql($Q,$Ha){global$f;$J=$f->result("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".fun_adm_q($Q));foreach(fun_adm_indexes($Q)as$E=>$u){if($E==''){continue;}$J.=";\n\n".fun_adm_index_sql($Q,$u['type'],$E,"(".implode(", ",array_map('fun_adm_idf_escape',$u['columns'])).")");}return$J;}function fun_adm_truncate_sql($Q){return"DELETE FROM ".fun_adm_table($Q);}function fun_adm_use_sql($Ib){}function fun_adm_trigger_sql($Q,$bi){return implode(fun_adm_get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".fun_adm_q($Q)));}function fun_adm_show_variables(){global$f;$J=array();foreach(array("auto_vacuum","cache_size","count_changes","default_cache_size","empty_result_callbacks","encoding","foreign_keys","full_column_names","fullfsync","journal_mode","journal_size_limit","legacy_file_format","locking_mode","page_size","max_page_count","read_uncommitted","recursive_triggers","reverse_unordered_selects","secure_delete","short_column_names","synchronous","temp_store","temp_store_directory","schema_version","integrity_check","quick_check")as$z){$J[$z]=$f->result("PRAGMA $z");}return$J;}function fun_adm_process_list(){return fun_adm_get_rows("SHOW FULL PROCESSLIST");}function fun_adm_replication_status($U){return fun_adm_get_rows("SHOW $U STATUS");}function fun_adm_show_status(){$J=array();foreach(fun_adm_get_vals("PRAGMA compile_options")as$Jf){$_a=explode("=",$Jf,2);if(fun_adm_count($_a)<2)$_a[1]='';$J[$_a[0]]=$_a[1];}return$J;}function fun_adm_convert_field($m){}function fun_adm_unconvert_field($m,$J){return$J;}function fun_adm_support($Qc){return preg_match('~^(columns|database|index|drop_col|dump|indexes|move_col|sql|status|table|trigger|variables|view|view_trigger|create|schema)$~',$Qc);}};function fun_adm_db_mysql($Dg){static$r=0;if($r!==0){return true;}$r++;if($Dg==='pdo'&&ADM_IS_PDOMYSQL){class Cls_Adm_Min_DB extends Cls_Adm_Min_PDO{public$extension="PDO_MySQL";public function connect($Eh,$vj,$hg){global$b;$Kf=array();$Uh=$b->connectSsl();if($Uh){$Kf=array(PDO::MYSQL_ATTR_SSL_KEY=>$Uh['key'],PDO::MYSQL_ATTR_SSL_CERT=>$Uh['cert'],PDO::MYSQL_ATTR_SSL_CA=>$Uh['ca'],);}$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$Eh)),$vj,$hg,$Kf);return true;}public function set_charset($Ya){$this->query("SET NAMES $Ya");}public function select_db($Ib){return$this->query("USE ".fun_adm_idf_escape($Ib));}public function query($H,$ej=false){fun_adm_query($H);$this->setAttribute(1000,!$ej);return parent::query($H,$ej);}}}else if(extension_loaded('mysqli')){class Cls_Adm_Min_DB extends mysqli{public$extension="MySQLi";public function __construct(){parent::init();}public function connect($Eh="",$vj="",$hg="",$Ib=null,$og=null,$Mh=null){global$b;mysqli_report(MYSQLI_REPORT_OFF);list($_d,$og)=explode(":",$Eh,2);$Uh=$b->connectSsl();if($Uh){$this->ssl_set($Uh['key'],$Uh['cert'],$Uh['ca'],'','');}$J=@$this->real_connect(($Eh!=""?$_d:ini_get("mysqli.default_host")),($Eh.$vj!=""?$vj:ini_get("mysqli.default_user")),($Eh.$vj.$hg!=""?$hg:ini_get("mysqli.default_pw")),$Ib,(is_numeric($og)?$og:ini_get("mysqli.default_port")),(!is_numeric($og)?$og:$Mh),($Uh?64:0));return$J;}public function next_result(){return$this->more_results();}public function set_charset($Ya){if(parent::set_charset($Ya)){return true;}parent::set_charset('utf8');return$this->query("SET NAMES $Ya");}public function result($H,$m=0){$I=$this->query($H);if(!$I){return false;}$K=$I->fetch_array();return$K[$m];}public function query($H,$ah=MYSQLI_STORE_RESULT){fun_adm_query($H);return parent::query($H,$ah);}public function quote($P){return"'".$this->escape_string($P)."'";}}}else{exit('mysqli not load...');}class Cls_Adm_Min_Driver extends Cls_Adm_Min_SQL{public function insert($Q,$N){return($N?parent::insert($Q,$N):fun_adm_queries("INSERT INTO ".fun_adm_table($Q)." ()\nVALUES ()"));}public function insertUpdate($Q,$L,$tg){$e=array_keys(reset($L));$rg="INSERT INTO ".fun_adm_table($Q)." (".implode(", ",$e).") VALUES\n";$_j=array();foreach($e as$z){$_j[$z]="$z = VALUES($z)";}$di="\nON DUPLICATE KEY UPDATE ".implode(", ",$_j);$_j=array();$ue=0;foreach($L as$N){$Y="(".implode(", ",$N).")";if($_j&&(strlen($rg)+$ue+strlen($Y)+strlen($di)>1e6)){if(!fun_adm_queries($rg.implode(",\n",$_j).$di)){return false;}$_j=array();$ue=0;}$_j[]=$Y;$ue+=strlen($Y)+2;}return fun_adm_queries($rg.implode(",\n",$_j).$di);}public function convertSearch($t,$X,$m){return(preg_match('~char|text|enum|set~',$m["type"])&&!preg_match("~^utf8~",$m["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($t USING ".fun_adm_charset($this->_conn).")":$t);}public function slowQuery($H,$Di){if(fun_adm_min_version('5.7.8','10.1.2')){if(preg_match('~MariaDB~',$this->_conn->server_info)){return"SET STATEMENT max_statement_time=$Di FOR $H";}elseif(preg_match('~^(SELECT\b)(.+)~is',$H,$C)){return"$C[1] /*+ MAX_EXECUTION_TIME(".($Di*1000).") */ $C[2]";}}}}function fun_adm_idf_escape($t){return"`".str_replace("`","``",$t)."`";}function fun_adm_table($t){return fun_adm_idf_escape($t);}function fun_adm_connect(){global$b,$V,$ai;$f=new Cls_Adm_Min_DB();$Eb=$b->credentials();if($f->connect($Eb[0],$Eb[1],$Eb[2])){$f->set_charset(fun_adm_charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");if(fun_adm_min_version('5.7.8',10.2,$f)){$ai[fun_adm_lang(6)][]="json";$V["json"]=4294967295;}return$f;}else{$Dh=explode(':',strtolower($Eb[0]));$pg=$Dh[1];$Dh=$Dh[0];if(in_array($Dh,array('127.0.0.1','localhost'))){$F=fun_adm_object();if($Dh!=='localhost'){$F->conf_dbhost='localhost';}else{$F->conf_dbhost='127.0.0.1';}if(is_numeric($pg)&&$pg>0){$F->conf_dbhost=$F->conf_dbhost.':'.$pg;}unset($f,$Eb);$f=new Cls_Adm_Min_DB();$Eb=$b->credentials();if($f->connect($Eb[0],$Eb[1],$Eb[2])){$f->set_charset(fun_adm_charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");if(version_compare($f->server_info,'5.7.8')>=0){$ai[fun_adm_lang(6)][]="json";$V["json"]=4294967295;}return$f;}}}$J=$f->error?$f->error:fun_adm_get_session('linkmsg');if(function_exists('iconv')&&!fun_adm_is_utf8($J)&&strlen($kh=iconv('windows-1250','utf-8',$J))>strlen($J)){$J=$kh;}return$J;}function fun_adm_get_databases($ed){global$f;$H=(fun_adm_min_version(5)?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA":"SHOW DATABASES");$J=($ed?fun_adm_slow_query($H):fun_adm_get_vals($H));if(ADM_DB_LOCK){foreach($J AS$y=>$X){if(!in_array(strtolower($X),$_SERVER['DB_LIST'])){unset($J[$y]);}}}else{if(ADM_DATA_FULL<1){$_SERVER['DB_LIST']=array();$_SERVER['DB_LIST'][]='information_schema';$_SERVER['DB_LIST'][]='mysql';$_SERVER['DB_LIST'][]='performance_schema';$_SERVER['DB_LIST'][]='phpmyadmin';$_SERVER['DB_LIST'][]='sys';foreach($J AS$y=>$X){if(in_array(strtolower($X),$_SERVER['DB_LIST'])){unset($J[$y]);}}}}return$J;}function fun_adm_limit($H,$Z,$_,$wf=0,$Ah=" "){return" $H$Z".($_!==null?$Ah."LIMIT $_".($wf?" OFFSET $wf":""):"");}function fun_adm_limit1($H,$Z){return fun_adm_limit($H,$Z,1);}function fun_adm_db_collation($k,$kb){global$f;$J=null;$h=$f->result("SHOW CREATE DATABASE ".fun_adm_idf_escape($k),1);if(preg_match('~ COLLATE ([^ ]+)~',$h,$C)){$J=$C[1];}elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$h,$C)){$J=$kb[$C[1]][-1];}return$J;}function fun_adm_engines(){$J=array();foreach(fun_adm_get_rows("SHOW ENGINES")as$K){if(preg_match("~YES|DEFAULT~",$K["Support"])){$J[]=$K["Engine"];}}return$J;}function fun_adm_logged_user(){global$f;return fun_adm_h($f->result("SELECT USER()"));}function fun_adm_tables_list(){return fun_adm_get_key_vals(fun_adm_min_version(5)?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function fun_adm_count_tables($j){$J=array();foreach($j as$k){$J[$k]=fun_adm_count(fun_adm_get_vals("SHOW TABLES IN ".fun_adm_idf_escape($k)));}return$J;}function fun_adm_table_status($E="",$Nc=false){global$f;$J=array();foreach(fun_adm_get_rows($Nc&&fun_adm_min_version(5)?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($E!=""?"AND TABLE_NAME = ".fun_adm_q($E):"ORDER BY Name"):"SHOW TABLE STATUS".($E!=""?" LIKE ".fun_adm_q(addcslashes($E,"%_\\")):""))as$K){if($K["Engine"]=="InnoDB"){$K["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$K["Comment"]);}if(!isset($K["Engine"])){$K["Comment"]="";}if($E!=""){return$K;}$J[$K["Name"]]=$K;}return$J;}function fun_adm_is_view($R){return$R["Engine"]===null;}function fun_adm_fk_support($R){return preg_match('~InnoDB|IBMDB2I~i',$R["Engine"])||(preg_match('~NDB~i',$R["Engine"])&&fun_adm_min_version(5.6));}function fun_adm_fields($Q){$J=array();foreach(fun_adm_get_rows("SHOW FULL COLUMNS FROM ".fun_adm_table($Q))as$K){preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$K["Type"],$C);$J[$K["Field"]]=array("field"=>$K["Field"],"full_type"=>$K["Type"],"type"=>$C[1],"length"=>$C[2],"unsigned"=>ltrim($C[3].$C[4]),"default"=>($K["Default"]!=""||preg_match("~char|set~",$C[1])?$K["Default"]:null),"null"=>($K["Null"]=="YES"),"auto_increment"=>($K["Extra"]=="auto_increment"),"on_update"=>(preg_match('~^on update (.+)~i',$K["Extra"],$C)?$C[1]:""),"collation"=>$K["Collation"],"privileges"=>array_flip(preg_split('~, *~',$K["Privileges"])),"comment"=>$K["Comment"],"primary"=>($K["Key"]=="PRI"),);}return$J;}function fun_adm_indexes($Q,$g=null){$J=array();foreach(fun_adm_get_rows("SHOW INDEX FROM ".fun_adm_table($Q),$g)as$K){$J[$K["Key_name"]]["type"]=($K["Key_name"]=="PRIMARY"?"PRIMARY":($K["Index_type"]=="FULLTEXT"?"FULLTEXT":($K["Non_unique"]?($K["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$J[$K["Key_name"]]["columns"][]=$K["Column_name"];$J[$K["Key_name"]]["lengths"][]=($K["Index_type"]=="SPATIAL"?null:$K["Sub_part"]);$J[$K["Key_name"]]["descs"][]=null;}return$J;}function fun_adm_foreign_keys($Q){global$f,$Cf;static$kg='`(?:[^`]|``)+`';$J=array();$Cb=$f->result("SHOW CREATE TABLE ".fun_adm_table($Q),1);if($Cb){preg_match_all("~CONSTRAINT ($kg) FOREIGN KEY ?\\(((?:$kg,? ?)+)\\) REFERENCES ($kg)(?:\\.($kg))? \\(((?:$kg,? ?)+)\\)(?: ON DELETE ($Cf))?(?: ON UPDATE ($Cf))?~",$Cb,$Ke,PREG_SET_ORDER);foreach($Ke as$C){preg_match_all("~$kg~",$C[2],$Nh);preg_match_all("~$kg~",$C[5],$ui);$J[fun_adm_idf_unescape($C[1])]=array("db"=>fun_adm_idf_unescape($C[4]!=""?$C[3]:$C[4]),"table"=>fun_adm_idf_unescape($C[4]!=""?$C[4]:$C[3]),"source"=>array_map('fun_adm_idf_unescape',$Nh[0]),"target"=>array_map('fun_adm_idf_unescape',$ui[0]),"on_delete"=>($C[6]?$C[6]:"RESTRICT"),"on_update"=>($C[7]?$C[7]:"RESTRICT"),);}}return$J;}function fun_adm_view($E){global$f;return array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',$f->result("SHOW CREATE VIEW ".fun_adm_table($E),1)));}function fun_adm_collations(){$J=array();foreach(fun_adm_get_rows("SHOW COLLATION")as$K){if($K["Default"]){$J[$K["Charset"]][-1]=$K["Collation"];}else{$J[$K["Charset"]][]=$K["Collation"];}}ksort($J);foreach($J as$z=>$X){asort($J[$z]);}return$J;}function fun_adm_information_schema($k){return(fun_adm_min_version(5)&&$k=="information_schema")||(fun_adm_min_version(5.5)&&$k=="performance_schema");}function fun_adm_error(){global$f;return fun_adm_h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$f->error));}function fun_adm_create_database($k,$jb){return fun_adm_queries("CREATE DATABASE ".fun_adm_idf_escape($k).($jb?" COLLATE ".fun_adm_q($jb):""));}function fun_adm_drop_databases($j){$J=fun_adm_apply_queries("DROP DATABASE",$j,'fun_adm_idf_escape');return$J;}function fun_adm_rename_database($E,$jb){$J=false;if(fun_adm_create_database($E,$jb)){$Xg=array();foreach(fun_adm_tables_list()as$Q=>$U){$Xg[]=fun_adm_table($Q)." TO ".fun_adm_idf_escape($E).".".fun_adm_table($Q);}$J=(!$Xg||fun_adm_queries("RENAME TABLE ".implode(", ",$Xg)));if($J){fun_adm_queries("DROP DATABASE ".fun_adm_idf_escape(ADM_DB));}}return$J;}function fun_adm_auto_increment(){$Ia=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(fun_adm_indexes($_GET["create"])as$u){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$u["columns"],true)){$Ia="";break;}if($u["type"]=="PRIMARY"){$Ia=" UNIQUE";}}}return" AUTO_INCREMENT$Ia";}function fun_adm_alter_table($Q,$E,$n,$fd,$pb,$tc,$jb,$Ha,$eg){$c=array();foreach($n as$m){$c[]=($m[1]?($Q!=""?($m[0]!=""?"CHANGE ".fun_adm_idf_escape($m[0]):"ADD"):" ")." ".implode($m[1]).($Q!=""?$m[2]:""):"DROP ".fun_adm_idf_escape($m[0]));}$c=array_merge($c,$fd);$O=($pb!==null?" COMMENT=".fun_adm_q($pb):"").($tc?" ENGINE=".fun_adm_q($tc):"").($jb?" COLLATE ".fun_adm_q($jb):"").($Ha!=""?" AUTO_INCREMENT=$Ha":"");if($Q==""){return fun_adm_queries("CREATE TABLE ".fun_adm_table($E)." (\n".implode(",\n",$c)."\n)$O$eg");}if($Q!=$E){$c[]="RENAME TO ".fun_adm_table($E);}if($O){$c[]=ltrim($O);}return($c||$eg?fun_adm_queries("ALTER TABLE ".fun_adm_table($Q)."\n".implode(",\n",$c).$eg):true);}function fun_adm_alter_indexes($Q,$c){foreach($c as$z=>$X){$c[$z]=($X[2]=="DROP"?"\nDROP INDEX ".fun_adm_idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?fun_adm_idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");}return fun_adm_queries("ALTER TABLE ".fun_adm_table($Q).implode(",",$c));}function fun_adm_truncate_tables($S){return fun_adm_apply_queries("TRUNCATE TABLE",$S);}function fun_adm_drop_views($Ej){return fun_adm_queries("DROP VIEW ".implode(", ",array_map('fun_adm_table',$Ej)));}function fun_adm_drop_tables($S){return fun_adm_queries("DROP TABLE ".implode(", ",array_map('fun_adm_table',$S)));}function fun_adm_move_tables($S,$Ej,$ui){$Xg=array();foreach(array_merge($S,$Ej)as$Q){$Xg[]=fun_adm_table($Q)." TO ".fun_adm_idf_escape($ui).".".fun_adm_table($Q);}return fun_adm_queries("RENAME TABLE ".implode(", ",$Xg));}function fun_adm_copy_tables($S,$Ej,$ui){fun_adm_queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($S as$Q){$E=($ui==ADM_DB?fun_adm_table("copy_$Q"):fun_adm_idf_escape($ui).".".fun_adm_table($Q));if(!fun_adm_queries("\nDROP TABLE IF EXISTS $E")||!fun_adm_queries("CREATE TABLE $E LIKE ".fun_adm_table($Q))||!fun_adm_queries("INSERT INTO $E SELECT * FROM ".fun_adm_table($Q))){return false;}}foreach($Ej as$Q){$E=($ui==ADM_DB?fun_adm_table("copy_$Q"):fun_adm_idf_escape($ui).".".fun_adm_table($Q));$Dj=fun_adm_view($Q);if(!fun_adm_queries("DROP VIEW IF EXISTS $E")||!fun_adm_queries("CREATE VIEW $E AS $Dj[select]")){return false;}}return true;}function fun_adm_trigger($E){if($E==""){return array();}$L=fun_adm_get_rows("SHOW TRIGGERS WHERE `Trigger` = ".fun_adm_q($E));return reset($L);}function fun_adm_triggers($Q){$J=array();foreach(fun_adm_get_rows("SHOW TRIGGERS LIKE ".fun_adm_q(addcslashes($Q,"%_\\")))as$K){$J[$K["Trigger"]]=array($K["Timing"],$K["Event"]);}return$J;}function fun_adm_trigger_options(){return array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function fun_adm_routine($E,$U){global$f,$vc,$Nd,$V;$wa=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$cj="((".implode("|",array_merge(array_keys($V),$wa)).")\\b(?:\\s*\\(((?:[^'\")]|$vc)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$kg="\\s*(".($U=="FUNCTION"?"":$Nd).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$cj";$h=$f->result("SHOW CREATE $U ".fun_adm_idf_escape($E),2);preg_match("~\\(((?:$kg\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$cj\\s+":"")."(.*)~is",$h,$C);$n=array();preg_match_all("~$kg\\s*,?~is",$C[1],$Ke,PREG_SET_ORDER);foreach($Ke as$Zf){$E=str_replace("``","`",$Zf[2]).$Zf[3];$n[]=array("field"=>$E,"type"=>strtolower($Zf[5]),"length"=>preg_replace_callback("~$vc~s",'fun_adm_normalize_enum',$Zf[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$Zf[8] $Zf[7]"))),"null"=>1,"full_type"=>$Zf[4],"inout"=>strtoupper($Zf[1]),"collation"=>strtolower($Zf[9]),);}if($U!="FUNCTION"){return array("fields"=>$n,"definition"=>$C[11]);}return array("fields"=>$n,"returns"=>array("type"=>$C[12],"length"=>$C[13],"unsigned"=>$C[15],"collation"=>$C[16]),"definition"=>$C[17],"language"=>"SQL",);}function fun_adm_routines(){return fun_adm_get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".fun_adm_q(ADM_DB));}function fun_adm_tableSTATUS($Q){$Ob=ADM_DB;$Rh="SHOW TABLE STATUS FROM `{$Ob}` LIKE '{$Q}'";$_a=fun_adm_get_rows($Rh);return$_a[0];}function fun_adm_routine_languages(){return array();}function fun_adm_last_id(){global$f;return$f->result("SELECT LAST_INSERT_ID()");}function fun_adm_explain($f,$H){return$f->query("EXPLAIN ".(fun_adm_min_version(5.1)?"PARTITIONS ":"").$H);}function fun_adm_found_rows($R,$Z){return($Z||$R["Engine"]!="InnoDB"?null:$R["Rows"]);}function fun_adm_types(){return array();}function fun_adm_schemas(){return array();}function fun_adm_get_schema(){return"";}function fun_adm_set_schema($th){return true;}function fun_adm_create_sql($Q,$Ha){global$f;$J=$f->result("SHOW CREATE TABLE ".fun_adm_table($Q),1);if(!$Ha){$J=preg_replace('~ AUTO_INCREMENT=\d+~','',$J);}return$J;}function fun_adm_truncate_sql($Q){return"TRUNCATE ".fun_adm_table($Q);}function fun_adm_use_sql($Ib){return"USE ".fun_adm_idf_escape($Ib);}function fun_adm_trigger_sql($Q,$bi){$J="";foreach(fun_adm_get_rows("SHOW TRIGGERS LIKE ".fun_adm_q(addcslashes($Q,"%_\\")),null,"-- ")as$K){$J.="\n".($bi=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".fun_adm_idf_escape($K["Trigger"]).";;\n":"")."CREATE TRIGGER ".fun_adm_idf_escape($K["Trigger"])." $K[Timing] $K[Event] ON ".fun_adm_table($K["Table"])." FOR EACH ROW\n$K[Statement];;\n";}return$J;}function fun_adm_show_variables(){return fun_adm_get_key_vals("SHOW VARIABLES");}function fun_adm_process_list(){return fun_adm_get_rows("SHOW FULL PROCESSLIST");}function fun_adm_show_status(){return fun_adm_get_key_vals("SHOW STATUS");}function fun_adm_replication_status($U){return fun_adm_get_rows("SHOW $U STATUS");}function fun_adm_convert_field($m){if(preg_match("~binary~",$m["type"])){return"HEX(".fun_adm_idf_escape($m["field"]).")";}if($m["type"]=="bit"){return"BIN(".fun_adm_idf_escape($m["field"])." + 0)";}if(preg_match("~geometry|point|linestring|polygon~",$m["type"])){return(fun_adm_min_version(8)?"ST_":"")."AsWKT(".fun_adm_idf_escape($m["field"]).")";}}function fun_adm_unconvert_field($m,$J){if(preg_match("~binary~",$m["type"])){$J="UNHEX($J)";}if($m["type"]=="bit"){$J="CONV($J, 2, 10) + 0";}if(preg_match("~geometry|point|linestring|polygon~",$m["type"])){$J=(fun_adm_min_version(8)?"ST_":"")."GeomFromText($J)";}return$J;}function fun_adm_support($Qc){global$f;if($Qc==='index'){return true;}return!preg_match("~scheme|sequence|type|view_trigger|materializedview".(fun_adm_min_version(5.1)?"":"|event|partitioning".(fun_adm_min_version(5)?"":"|routine|trigger|view"))."~",$Qc);}function fun_adm_kill_process($X){return fun_adm_queries("KILL ".fun_adm_number($X));}function fun_adm_max_connections(){global$f;return$f->result("SELECT @@max_connections");}};function fun_adm_db_pgsql($Dg){static$r=0;if($r!==0){return true;}$r++;if($Dg==='pdo'&&fun_adm_constant('ADM_IS_PDOPGSQL')){class Cls_Adm_Min_DB extends Cls_Adm_Min_PDO{public$extension='PDO_PgSQL';public function connect($Eh,$vj,$hg){global$b;$k=$b->database();$P="pgsql:host='".str_replace(":","' port='",addcslashes($Eh,"'\\"))."' options='-c client_encoding=utf8'";if(!$this->dsn("$P dbname='".($k!=""?addcslashes($k,"'\\"):"postgres")."'",$vj,$hg)){return$this->dsn("$P dbname='postgres'",$vj,$hg);}return true;}public function select_db($Ib){global$b;return($b->database()==$Ib);}public function query($H,$ej=false){fun_adm_query($H);return parent::query($H,$ej);}public function close(){}public function value($X,$m){return$X;}public function quoteBinary($kh){return fun_adm_q($kh);}public function warnings(){return'';}}}else{class Cls_Adm_Min_DB{public$extension='PgSQL';public$_link;public$_string;public$_database=true;public$server_info;public$affected_rows=0;public$error;public function _error($zc,$l){if(fun_adm_ini_bool("html_errors")){$l=html_entity_decode(strip_tags($l));}$l=preg_replace('~^[^:]*: ~','',$l);$this->error=$l;}public function connect($Eh,$vj,$hg){global$b;$k=$b->database();set_error_handler(array($this,'_error'));$this->_string="host='".str_replace(":","' port='",addcslashes($Eh,"'\\"))."' user='".addcslashes($vj,"'\\")."' password='".addcslashes($hg,"'\\")."'";$this->_link=@pg_connect("$this->_string dbname='".($k!=""?addcslashes($k,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->_link){$this->_link=@pg_connect("$this->_string dbname='postgres'",PGSQL_CONNECT_FORCE_NEW);}if(!$this->_link&&$k!=""){$this->_database=false;$this->_link=@pg_connect("$this->_string dbname='postgres'",PGSQL_CONNECT_FORCE_NEW);}restore_error_handler();if($this->_link){$Cj=pg_version($this->_link);$this->server_info=$Cj["server"];pg_set_client_encoding($this->_link,"UTF8");}return(bool)$this->_link;}public function quote($P){return"'".pg_escape_string($this->_link,$P)."'";}public function value($X,$m){return($m["type"]=="bytea"?pg_unescape_bytea($X):$X);}public function quoteBinary($P){return"'".pg_escape_bytea($this->_link,$P)."'";}public function select_db($Ib){global$b;if($Ib==$b->database()){return$this->_database;}$J=@pg_connect("$this->_string dbname='".addcslashes($Ib,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($J){$this->_link=$J;}return$J;}public function close(){$this->_link=@pg_connect("$this->_string dbname='postgres'");}public function query($H,$ej=false){fun_adm_query($H);$I=@pg_query($this->_link,$H);$this->error="";if(!$I){$this->error=pg_last_error($this->_link);return false;}elseif(!pg_num_fields($I)){$this->affected_rows=pg_affected_rows($I);return true;}return new Min_Result($I);}public function multi_query($H){return$this->_result=$this->query($H);}public function store_result(){return$this->_result;}public function next_result(){return false;}public function result($H,$m=0){$I=$this->query($H);if(!$I||!$I->num_rows){return false;}return pg_fetch_result($I->_result,0,$m);}}class Min_Result{public$_result;public$_offset=0;public$num_rows;public function __construct($I){$this->_result=$I;$this->num_rows=pg_num_rows($I);}public function fetch_assoc(){return pg_fetch_assoc($this->_result);}public function fetch_row(){return pg_fetch_row($this->_result);}public function fetch_field(){$d=$this->_offset++;$J=new stdClass();if(function_exists('pg_field_table')){$J->orgtable=pg_field_table($this->_result,$d);}$J->name=pg_field_name($this->_result,$d);$J->orgname=$J->name;$J->type=pg_field_type($this->_result,$d);$J->charsetnr=($J->type=="bytea"?63:0);return$J;}public function __destruct(){pg_free_result($this->_result);}}}class Cls_Adm_Min_Driver extends Cls_Adm_Min_SQL{public function insertUpdate($Q,$L,$tg){global$f;foreach($L as$N){$lj=array();$Z=array();foreach($N as$z=>$X){$lj[]="$z = $X";if(isset($tg[fun_adm_idf_unescape($z)])){$Z[]="$z = $X";}}if(!(($Z&&fun_adm_queries("UPDATE ".fun_adm_table($Q)." SET ".implode(", ",$lj)." WHERE ".implode(" AND ",$Z))&&$f->affected_rows)||fun_adm_queries("INSERT INTO ".fun_adm_table($Q)." (".implode(", ",array_keys($N)).") VALUES (".implode(", ",$N).")"))){return false;}}return true;}public function slowQuery($H,$Di){return"BEGIN; SET LOCAL statement_timeout = ".(1000*$Di)."; $H; COMMIT";}public function convertSearch($t,$X,$m){return(preg_match('~char|text'.(!preg_match('~LIKE~',$X["op"])?'|date|time(stamp)?|boolean|'.fun_adm_number_type():'').'~',$m["type"])?$t:"CAST($t AS text)");}public function warnings(){return$this->_conn->warnings();}}function fun_adm_idf_escape($t){return'"'.str_replace('"','""',$t).'"';}function fun_adm_table($t){return fun_adm_idf_escape($t);}function fun_adm_get_databases(){$J=fun_adm_get_vals("SELECT datname FROM pg_database WHERE has_database_privilege(datname, 'CONNECT') ORDER BY datname");if(ADM_DB_LOCK){foreach($J AS$y=>$X){if(!in_array(strtolower($X),$_SERVER['DB_LIST'])){unset($J[$y]);}}}else{if(ADM_DATA_FULL<1){$_SERVER['DB_LIST']=array();$_SERVER['DB_LIST'][]='template0';$_SERVER['DB_LIST'][]='template1';foreach($J AS$y=>$X){if(in_array(strtolower($X),$_SERVER['DB_LIST'])){unset($J[$y]);}}}}return$J;}function fun_adm_limit($H,$Z,$_,$wf=0,$Ah=" "){return" $H$Z".($_!==null?$Ah."LIMIT $_".($wf?" OFFSET $wf":""):"");}function fun_adm_limit1($H,$Z){return" $H$Z";}function fun_adm_db_collation($k,$kb){global$f;return$f->result("SHOW LC_COLLATE");}function fun_adm_engines(){return array();}function fun_adm_logged_user(){global$f;return$f->result("SELECT user");}function fun_adm_tables_list(){$H="SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";if(fun_adm_support('materializedview')){$H.="
UNION ALL
SELECT matviewname, 'MATERIALIZED VIEW'
FROM pg_matviews
WHERE schemaname = current_schema()";}$H.="
ORDER BY 1";return fun_adm_get_key_vals($H);}function fun_adm_count_tables($j){return array();}function fun_adm_table_status($E=""){$J=array();foreach(fun_adm_get_rows("SELECT c.relname AS \"Name\", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'm' THEN 'materialized view' ELSE 'view' END AS \"Engine\", pg_relation_size(c.oid) AS \"Data_length\", pg_total_relation_size(c.oid) - pg_relation_size(c.oid) AS \"Index_length\", obj_description(c.oid, 'pg_class') AS \"Comment\", c.relhasoids::int AS \"Oid\", c.reltuples as \"Rows\", n.nspname 
FROM pg_class c
JOIN pg_namespace n ON(n.nspname = current_schema() AND n.oid = c.relnamespace)
WHERE relkind IN ('r', 'm', 'v')
".($E!=""?"AND relname = ".fun_adm_q($E):"ORDER BY c.oid"))as$K){$J[$K["Name"]]=$K;}return($E!=""?$J[$E]:$J);}function fun_adm_is_view($R){return in_array($R["Engine"],array("view","materialized view"));}function fun_adm_fk_support($R){return true;}function fun_adm_fields($Q){$J=array();$wa=array('timestamp without time zone'=>'timestamp','timestamp with time zone'=>'timestamptz',);foreach(fun_adm_get_rows("SELECT a.attname AS field, format_type(a.atttypid, a.atttypmod) AS full_type, d.adsrc AS default, a.attnotnull::int, col_description(c.oid, a.attnum) AS comment
FROM pg_class c
JOIN pg_namespace n ON c.relnamespace = n.oid
JOIN pg_attribute a ON c.oid = a.attrelid
LEFT JOIN pg_attrdef d ON c.oid = d.adrelid AND a.attnum = d.adnum
WHERE c.relname = ".fun_adm_q($Q)."
AND n.nspname = current_schema()
AND NOT a.attisdropped
AND a.attnum > 0
ORDER BY a.attnum")as$K){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$K["full_type"],$C);list(,$U,$ue,$K["length"],$na,$Aa)=$C;$K["length"].=$Aa;$bb=$U.$na;if(isset($wa[$bb])){$K["type"]=$wa[$bb];$K["full_type"]=$K["type"].$ue.$Aa;}else{$K["type"]=$U;$K["full_type"]=$K["type"].$ue.$na.$Aa;}$K["null"]=!$K["attnotnull"];$K["auto_increment"]=preg_match('~^nextval\(~i',$K["default"]);$K["privileges"]=array("insert"=>1,"select"=>1,"update"=>1);if(preg_match('~(.+)::[^)]+(.*)~',$K["default"],$C)){$K["default"]=($C[1][0]=="'"?fun_adm_idf_unescape($C[1]):$C[1]).$C[2];}$J[$K["field"]]=$K;}return$J;}function fun_adm_indexes($Q,$g=null){global$f;if(!is_object($g)){$g=$f;}$J=array();$li=$g->result("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".fun_adm_q($Q));$e=fun_adm_get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $li AND attnum > 0",$g);foreach(fun_adm_get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption , (indpred IS NOT NULL)::int as indispartial FROM pg_index i, pg_class ci WHERE i.indrelid = $li AND ci.oid = i.indexrelid",$g)as$K){$Wg=$K["relname"];$J[$Wg]["type"]=($K["indispartial"]?"INDEX":($K["indisprimary"]?"PRIMARY":($K["indisunique"]?"UNIQUE":"INDEX")));$J[$Wg]["columns"]=array();foreach(explode(" ",$K["indkey"])as$Hd){$J[$Wg]["columns"][]=$e[$Hd];}$J[$Wg]["descs"]=array();foreach(explode(" ",$K["indoption"])as$Id){$J[$Wg]["descs"][]=($Id&1?'1':null);}$J[$Wg]["lengths"]=array();}return$J;}function fun_adm_foreign_keys($Q){global$Cf;$J=array();foreach(fun_adm_get_rows("SELECT conname, condeferrable::int AS deferrable, pg_get_constraintdef(oid) AS definition
FROM pg_constraint
WHERE conrelid = (SELECT pc.oid FROM pg_class AS pc INNER JOIN pg_namespace AS pn ON (pn.oid = pc.relnamespace) WHERE pc.relname = ".fun_adm_q($Q)." AND pn.nspname = current_schema())
AND contype = 'f'::char
ORDER BY conkey, conname")as$K){if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$K['definition'],$C)){$K['source']=array_map('trim',explode(',',$C[1]));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$C[2],$Je)){$K['ns']=str_replace('""','"',preg_replace('~^"(.+)"$~','\1',$Je[2]));$K['table']=str_replace('""','"',preg_replace('~^"(.+)"$~','\1',$Je[4]));}$K['target']=array_map('trim',explode(',',$C[3]));$K['on_delete']=(preg_match("~ON DELETE ($Cf)~",$C[4],$Je)?$Je[1]:'NO ACTION');$K['on_update']=(preg_match("~ON UPDATE ($Cf)~",$C[4],$Je)?$Je[1]:'NO ACTION');$J[$K['conname']]=$K;}}return$J;}function fun_adm_view($E){global$f;return array("select"=>trim($f->result("SELECT pg_get_viewdef(".fun_adm_q($E).")")));}function fun_adm_collations(){return array();}function fun_adm_information_schema($k){return($k=="information_schema");}function fun_adm_error(){global$f;$J=fun_adm_h($f->error);if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$J,$C)){$J=$C[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($C[3]).'})(.*)~','\1<b>\2</b>',$C[2]).$C[4];}return fun_adm_nl_br($J);}function fun_adm_create_database($k,$jb){return fun_adm_queries("CREATE DATABASE ".fun_adm_idf_escape($k).($jb?" ENCODING ".fun_adm_idf_escape($jb):""));}function fun_adm_drop_databases($j){global$f;$f->close();return fun_adm_apply_queries("DROP DATABASE",$j,'idf_escape');}function rename_database($E,$jb){return fun_adm_queries("ALTER DATABASE ".fun_adm_idf_escape(DB)." RENAME TO ".fun_adm_idf_escape($E));}function fun_adm_auto_increment(){return'';}function fun_adm_alter_table($Q,$E,$n,$fd,$pb,$tc,$jb,$Ha,$eg){$c=array();$Bg=array();foreach($n as$m){$d=fun_adm_idf_escape($m[0]);$X=$m[1];if(!$X){$c[]="DROP $d";}else{$xj=$X[5];unset($X[5]);if(isset($X[6])&&$m[0]==""){$X[1]=($X[1]=="bigint"?" big":" ")."serial";}if($m[0]==""){$c[]=($Q!=""?"ADD ":"  ").implode($X);}else{if($d!=$X[0]){$Bg[]="ALTER TABLE ".fun_adm_table($Q)." RENAME $d TO $X[0]";}$c[]="ALTER $d TYPE$X[1]";if(!$X[6]){$c[]="ALTER $d ".($X[3]?"SET{$X[3]}":"DROP DEFAULT");$c[]="ALTER $d ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}}if($m[0]!=""||$xj!=""){$Bg[]="COMMENT ON COLUMN ".fun_adm_table($Q).".$X[0] IS ".($xj!=""?substr($xj,9):"''");}}}$c=array_merge($c,$fd);if($Q==""){array_unshift($Bg,"CREATE TABLE ".fun_adm_table($E)." (\n".implode(",\n",$c)."\n)");}elseif($c){array_unshift($Bg,"ALTER TABLE ".fun_adm_table($Q)."\n".implode(",\n",$c));}if($Q!=""&&$Q!=$E){$Bg[]="ALTER TABLE ".fun_adm_table($Q)." RENAME TO ".fun_adm_table($E);}if($Q!=""||$pb!=""){$Bg[]="COMMENT ON TABLE ".fun_adm_table($E)." IS ".fun_adm_q($pb);}if($Ha!=""){}foreach($Bg as$H){if(!fun_adm_queries($H)){return false;}}return true;}function fun_adm_alter_indexes($Q,$c){$h=array();$ec=array();$Bg=array();foreach($c as$X){if($X[0]!="INDEX"){$h[]=($X[2]=="DROP"?"\nDROP CONSTRAINT ".fun_adm_idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".fun_adm_idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");}elseif($X[2]=="DROP"){$ec[]=fun_adm_idf_escape($X[1]);}else{$Bg[]="CREATE INDEX ".fun_adm_idf_escape($X[1]!=""?$X[1]:uniqid($Q."_"))." ON ".fun_adm_table($Q)." (".implode(", ",$X[2]).")";}}if($h){array_unshift($Bg,"ALTER TABLE ".fun_adm_table($Q).implode(",",$h));}if($ec){array_unshift($Bg,"DROP INDEX ".implode(", ",$ec));}foreach($Bg as$H){if(!fun_adm_queries($H)){return false;}}return true;}function fun_adm_truncate_tables($S){return fun_adm_queries("TRUNCATE ".implode(", ",array_map('table',$S)));return true;}function fun_adm_drop_views($Ej){return fun_adm_drop_tables($Ej);}function fun_adm_drop_tables($S){foreach($S as$Q){$O=fun_adm_table_status($Q);if(!fun_adm_queries("DROP ".strtoupper($O["Engine"])." ".fun_adm_table($Q))){return false;}}return true;}function fun_adm_move_tables($S,$Ej,$ui){foreach(array_merge($S,$Ej)as$Q){$O=table_status($Q);if(!fun_adm_queries("ALTER ".strtoupper($O["Engine"])." ".fun_adm_table($Q)." SET SCHEMA ".fun_adm_idf_escape($ui))){return false;}}return true;}function fun_adm_trigger($E,$Q=null){if($E==""){return array("Statement"=>"EXECUTE PROCEDURE ()");}if($Q===null){$Q=$_GET['trigger'];}$L=fun_adm_get_rows('SELECT t.trigger_name AS "Trigger", t.action_timing AS "Timing", (SELECT STRING_AGG(event_manipulation, \' OR \') FROM information_schema.triggers WHERE event_object_table = t.event_object_table AND trigger_name = t.trigger_name ) AS "Events", t.event_manipulation AS "Event", \'FOR EACH \' || t.action_orientation AS "Type", t.action_statement AS "Statement" FROM information_schema.triggers t WHERE t.event_object_table = '.fun_adm_q($Q).' AND t.trigger_name = '.fun_adm_q($E));return reset($L);}function fun_adm_triggers($Q){$J=array();foreach(fun_adm_get_rows("SELECT * FROM information_schema.triggers WHERE event_object_table = ".fun_adm_q($Q))as$K){$J[$K["trigger_name"]]=array($K["action_timing"],$K["event_manipulation"]);}return$J;}function fun_adm_trigger_options(){return array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW","FOR EACH STATEMENT"),);}function fun_adm_routines(){return fun_adm_get_rows('SELECT p.proname AS "ROUTINE_NAME", p.proargtypes AS "ROUTINE_TYPE", pg_catalog.format_type(p.prorettype, NULL) AS "DTD_IDENTIFIER"
FROM pg_catalog.pg_namespace n
JOIN pg_catalog.pg_proc p ON p.pronamespace = n.oid
WHERE n.nspname = current_schema()
ORDER BY p.proname');}function fun_adm_routine_languages(){return fun_adm_get_vals("SELECT langname FROM pg_catalog.pg_language");}function fun_adm_last_id(){return 0;}function fun_adm_explain($f,$H){return$f->query("EXPLAIN $H");}function fun_adm_found_rows($R,$Z){global$f;if(preg_match("~ rows=([0-9]+)~",$f->result("EXPLAIN SELECT * FROM ".fun_adm_idf_escape($R["Name"]).($Z?" WHERE ".implode(" AND ",$Z):"")),$Vg)){return$Vg[1];}return false;}function fun_adm_types(){return fun_adm_get_vals("SELECT typname
FROM pg_type
WHERE typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())
AND typtype IN ('b','d','e')
AND typelem = 0");}function fun_adm_schemas(){return fun_adm_get_vals("SELECT nspname FROM pg_namespace ORDER BY nspname");}function fun_adm_get_schema(){global$f;return$f->result("SELECT current_schema()");}function fun_adm_set_schema($th){global$f,$V,$ai;$J=$f->query("SET search_path TO ".fun_adm_idf_escape($th));foreach(fun_adm_types()as$U){if(!isset($V[$U])){$V[$U]=0;$ai[fun_adm_lang(211)][]=$U;}}return$J;}function fun_adm_truncate_sql($Q){return"TRUNCATE ".table($Q);}function fun_adm_create_sql($Q,$Ha){global$f;$J='';$bh=array();$Ch=array();$O=fun_adm_table_status($Q);$n=fun_adm_fields($Q);$v=fun_adm_indexes($Q);ksort($v);$cd=fun_adm_foreign_keys($Q);ksort($cd);$aj=fun_adm_triggers($Q);if(!$O||empty($n)){return false;}$J="CREATE TABLE ".fun_adm_idf_escape($O['nspname']).".".fun_adm_idf_escape($O['Name'])." (\n    ";foreach($n as$Sc=>$m){$bg=fun_adm_idf_escape($m['field']).' '.$m['full_type'].fun_adm_default_value($m).($m['attnotnull']?" NOT NULL":"");$bh[]=$bg;if(preg_match('~nextval\(\'([^\']+)\'\)~',$m['default'],$Ke)){$Bh=$Ke[1];$Qh=reset(fun_adm_get_rows(fun_adm_min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".fun_adm_q($Bh):"SELECT * FROM $Bh"));$Ch[]=($bi=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $Bh;\n":"")."CREATE SEQUENCE $Bh INCREMENT $Qh[increment_by] MINVALUE $Qh[min_value] MAXVALUE $Qh[max_value] START ".($Ha?$Qh['last_value']:1)." CACHE $Qh[cache_value];";}}if(!empty($Ch)){$J=implode("\n\n",$Ch)."\n\n$J";}foreach($v as$Fd=>$u){switch($u['type']){case'UNIQUE':$bh[]="CONSTRAINT ".fun_adm_idf_escape($Fd)." UNIQUE (".implode(', ',array_map('idf_escape',$u['columns'])).")";break;case'PRIMARY':$bh[]="CONSTRAINT ".fun_adm_idf_escape($Fd)." PRIMARY KEY (".implode(', ',array_map('idf_escape',$u['columns'])).")";break;}}foreach($cd as$bd=>$ad){$bh[]="CONSTRAINT ".fun_adm_idf_escape($bd)." $ad[definition] ".($ad['deferrable']?'DEFERRABLE':'NOT DEFERRABLE');}$J.=implode(",\n    ",$bh)."\n) WITH (oids = ".($O['Oid']?'true':'false').");";foreach($v as$Fd=>$u){if($u['type']=='INDEX'){$J.="\n\nCREATE INDEX ".fun_adm_idf_escape($Fd)." ON ".fun_adm_idf_escape($O['nspname']).".".fun_adm_idf_escape($O['Name'])." USING btree (".implode(', ',array_map('idf_escape',$u['columns'])).");";}}if($O['Comment']){$J.="\n\nCOMMENT ON TABLE ".fun_adm_idf_escape($O['nspname']).".".fun_adm_idf_escape($O['Name'])." IS ".fun_adm_q($O['Comment']).";";}foreach($n as$Sc=>$m){if($m['comment']){$J.="\n\nCOMMENT ON COLUMN ".fun_adm_idf_escape($O['nspname']).".".fun_adm_idf_escape($O['Name']).".".fun_adm_idf_escape($Sc)." IS ".fun_adm_q($m['comment']).";";}}foreach($aj as$Wi=>$Vi){$Xi=fun_adm_trigger($Wi,$O['Name']);$J.="\n\nCREATE TRIGGER ".fun_adm_idf_escape($Xi['Trigger'])." {$Xi['Timing']} {$Xi['Events']} ON ".fun_adm_idf_escape($O["nspname"]).".".fun_adm_idf_escape($O['Name'])." {$Xi['Type']} {$Xi['Statement']};";}return rtrim($J,';');}function fun_adm_trigger_sql($Q,$bi){$J="";return false;}function fun_adm_use_sql($Ib){return"\connect ".fun_adm_idf_escape($Ib);}function fun_adm_show_variables(){return fun_adm_get_key_vals('SHOW ALL');}function fun_adm_process_list(){return fun_adm_get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(fun_adm_min_version(9.2)?"pid":"procpid"));}function fun_adm_show_status(){}function fun_adm_convert_field($m){}function fun_adm_unconvert_field($m,$J){return$J;}function fun_adm_support($Qc){return preg_match('~^(database|table|columns|sql|indexes|comment|view|'.(fun_adm_min_version(9.3)?'materializedview|':'').'scheme|routine|processlist|sequence|trigger|type|variables|drop_col|kill|dump)$~',$Qc);}function fun_adm_kill_process($X){return fun_adm_queries("SELECT pg_terminate_backend(".fun_adm_number($X).")");}function fun_adm_connection_id(){return"SELECT pg_backend_pid()";}function fun_adm_max_connections(){global$f;return$f->result("SHOW max_connections");}function fun_adm_connect(){global$b,$V,$ai;$f=new Cls_Adm_Min_DB();$Eb=$b->credentials();if($f->connect($Eb[0],$Eb[1],$Eb[2])){if(fun_adm_min_version(9,0,$f)){$f->query("SET application_name = 'Adminer'");if(fun_adm_min_version(9.2,0,$f)){$ai[fun_adm_lang(6)][]="json";$V["json"]=4294967295;if(fun_adm_min_version(9.4,0,$f)){$ai[fun_adm_lang(6)][]="jsonb";$V["jsonb"]=4294967295;}}}return$f;}else{$Dh=explode(':',strtolower($Eb[0]));$pg=$Dh[1];$Dh=$Dh[0];if(in_array($Dh,array('127.0.0.1','localhost'))){$F=fun_adm_object();if($Dh!=='localhost'){$F->conf_dbhost='localhost';}else{$F->conf_dbhost='127.0.0.1';}if(is_numeric($pg)&&$pg>0){$F->conf_dbhost=$F->conf_dbhost.':'.$pg;}unset($f,$Eb);$f=new Cls_Adm_Min_DB();$Eb=$b->credentials();if($f->connect($Eb[0],$Eb[1],$Eb[2])){if($f->server_info>=9){$f->query("SET application_name = 'Qadmin'");if($f->server_info>=9.2){$ai[fun_adm_lang(6)][]="json";$V["json"]=4294967295;if($f->server_info>=9.4){$ai[fun_adm_lang(6)][]="jsonb";$V["jsonb"]=4294967295;}}}return$f;}}}$J=$f->error?$f->error:fun_adm_get_session('linkmsg');if(function_exists('iconv')&&!fun_adm_is_utf8($J)&&strlen($kh=iconv('windows-1250','utf-8',$J))>strlen($J)){$J=$kh;}return$J;}}class Cls_Adm_Qadmin{public$operators;public function connectSsl(){$F=fun_adm_object();$F=$F->conf_ssl;if(!is_array($F))return array();if($F['key']){return$F;}if(count($F)>0){$F=['key'=>$F[0],'cert'=>$F[1],'ca'=>$F[2]];}return$F;}public function isUser(){if(defined('ADM_LOGIN_ERR')){if(ADM_LOGIN_ERR){return false;}}if(isset($_SESSION[ADM_USER_SID])&&empty($_SESSION[ADM_USER_SID])===false){if(ADM_DRIVER&&strpos('sqlite',ADM_DRIVER)!==false){if(fun_adm_get_session('driver')){return true;}};if(fun_adm_get_session('username')){return true;}}return false;}public function name(){$nj=rtrim(ADM_URL,'?');return"<a href=\"{$nj}\" id=\"h1\">Qadmin</a>";}public function credentials(){$F=fun_adm_object();return array(trim($F->conf_dbhost),trim($F->conf_dbuser),trim($F->conf_dbpass));}public function permanentLogin($h=false){return password_file($h);}public function bruteForceKey(){return$_SERVER['REMOTE_ADDR'];}public function database(){return ADM_DB;}public function databases($ed=true){return fun_adm_get_databases($ed);}public function schemas(){return fun_adm_schemas();}public function queryTimeout(){return 2;}public function headers(){return false;}public function head(){echo'';return true;}public function login($De,$hg){if(strpos('sqlite',ADM_DRIVER)!==false){global$f;if($f->select_db('user.db')===false){fun_adm_create_database('user.db','');if($f->select_db('user.db')){$f->query('CREATE TABLE "user" ("uid" integer NOT NULL PRIMARY KEY AUTOINCREMENT,"username" text NOT NULL,"userpass" text NOT NULL)');$f->query('CREATE UNIQUE INDEX "user_username" ON "user" ("username")');$f->query("INSERT INTO `user` (`uid`, `username`, `userpass`) VALUES (1,'root','root')");}}$uj=$f->result("SELECT *, rowid FROM `user` WHERE `username` = 'root'",'userpass');if($uj!==$hg){$F=fun_adm_object();$f=$F->conf_note['sqlite_err'].fun_adm_get_path('user.db');return false;}}return true;}public function tableName($ji){return fun_adm_h($ji["Name"]);}public function fieldName($m,$Nf=0){return'<span title="'.fun_adm_h($m["full_type"]).'">'.fun_adm_h($m["field"]).'</span>';}public function selectLinks($ji,$N=''){if(!$ji){$this->homepage();return true;}echo'<p class="links">';$_e=array("select"=>fun_adm_lang(198));if(fun_adm_support("table")||fun_adm_support("indexes")){$_e["table"]=fun_adm_lang(246);$_e["indexes"]=fun_adm_lang(25);}if(fun_adm_support("table")){if(fun_adm_is_view($ji)){$_e["view"]=fun_adm_lang(120);}else{$_e["create"]=fun_adm_lang(80);}}$Ld=$_GET;if($N!==null){$_e['edit']=fun_adm_lang(200);$_e['sql']=fun_adm_lang(247);}if($Ld['edit']){unset($Ld['select']);}foreach($_e as$z=>$X){$ka='';if(isset($Ld[$z])){$ka=' class="meun_a_focus"';}echo" <a href=\"".fun_adm_h(ADM_ME)."$z=".urlencode($ji["Name"]).($z=="edit"?$N:'').'"'.$ka.">$X</a>";}echo"\n";}public function foreignKeys($Q){return fun_adm_foreign_keys($Q);}public function backwardKeys($Q,$ii){return array();}public function backwardKeysPrint($Ka,$K){}public function selectQuery($H,$Ci){global$x;return"<p id=\"querysqlinfo\"><code class='jush-$x'>".fun_adm_h(str_replace("\n"," ",$H))."</code> <span class='time'>($Ci)</span>".(fun_adm_support("sql")?" <a href='".fun_adm_h(ADM_ME)."sql=".urlencode($H)."'>".fun_adm_lang(48)."</a> / <a href=\"".ADM_THIS_URL."\">".fun_adm_lang(86)."</a>":"")."</p>";}public function rowDescription($Q){return"";}public function rowDescriptions($L,$gd){return$L;}public function selectLink($X,$m){}public function selectVal($X,$A,$m,$Uf){$J=($X===null?"<i>NULL</i>":$X);if(preg_match('~blob|bytea|raw|file~',$m["type"])&&!fun_adm_is_utf8($X)){$J="<i>".fun_adm_lang(233,strlen($Uf))."</i>";}if(preg_match('~json~',$m["type"])){$J="<code class='jush-js'>$J</code>";}return$J;}public function editVal($X,$m){return$X;}public function selectColumnsPrint($M,$e){global$od,$ud;fun_adm_print_fieldset("select",fun_adm_lang(230),$M);$r=0;$M[""]=array();foreach($M as$z=>$X){$X=$_GET["columns"][$z];$d=fun_adm_sel_input(" name='columns[$r][col]' onchange='".($z!==""?"selectFieldChange(this.form)":"selectAddRow(this)").";'",$e,$X["col"]);echo"<div>".($od||$ud?"<select name='columns[$r][fun]' onchange='helpClose();".($z!==""?"":" this.nextSibling.nextSibling.onchange();")."'".fun_adm_on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'",1).">".fun_adm_optionlist(array(-1=>"")+array_filter(array(fun_adm_lang(248)=>$od,fun_adm_lang(249)=>$ud)),$X["fun"])."</select>"."($d)":$d)."</div>\n";$r++;}echo"</div></fieldset>\n";}public function selectSearchPrint($Z,$e,$v){fun_adm_print_fieldset("search",fun_adm_lang(172),$Z);foreach($v as$r=>$u){if($u["type"]=="FULLTEXT"){echo"(<i>".implode("</i>, <i>",array_map('fun_adm_h',$u["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$r]' value='".fun_adm_h($_GET["fulltext"][$r])."' onchange='selectFieldChange(this.form);'>",fun_adm_checkbox("boolean[$r]",1,isset($_GET["boolean"][$r]),"BOOL"),"<br>\n";}}$_GET["where"]=(array)$_GET["where"];reset($_GET["where"]);$Xa="this.nextSibling.onchange();";for($r=0;$r<=fun_adm_count($_GET["where"]);$r++){list($fe,$X)=fun_adm_each($_GET["where"]);if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators))){echo"<div>".fun_adm_sel_input(" name='where[$r][col]' onchange='$Xa'",$e,$X["col"],"(".fun_adm_lang(250).")"),fun_adm_html_select("where[$r][op]",$this->operators,$X["op"],$Xa),"<input type='search' name='where[$r][val]' value='".fun_adm_h($X["val"])."' onchange='".($X?"selectFieldChange(this.form)":"selectAddRow(this)").";' onkeydown='selectSearchKeydown(this, event);' onsearch='selectSearchSearch(this);'></div>\n";}}echo"</div></fieldset>\n";}public function selectOrderPrint($Nf,$e,$v){fun_adm_print_fieldset("sort",fun_adm_lang(251),$Nf);$r=0;foreach((array)$_GET["order"]as$z=>$X){if($X!=""){echo"<div>".fun_adm_sel_input(" name='order[$r]' onchange='selectFieldChange(this.form);'",$e,$X),fun_adm_checkbox("desc[$r]",1,isset($_GET["desc"][$z]),fun_adm_lang(97))."</div>\n";$r++;}}echo"<div>".fun_adm_sel_input(" name='order[$r]' onchange='selectAddRow(this);'",$e),fun_adm_checkbox("desc[$r]",1,false,fun_adm_lang(97))."</div>\n","</div></fieldset>\n";}public function selectLimitPrint($_){echo"<fieldset><legend>".fun_adm_lang(252)."</legend><div>";echo"<input type='number' name='limit' class='size' value='".fun_adm_h($_)."' onchange='selectFieldChange(this.form);'>","</div></fieldset>\n";}public function selectLengthPrint($_i){if($_i!==null){echo"<fieldset><legend>".fun_adm_lang(253)."</legend><div>","<input type='number' name='text_length' class='size' value='".fun_adm_h($_i)."'>","</div></fieldset>\n";}}public function selectActionPrint($v){echo"<fieldset><legend>".fun_adm_lang(254)."</legend><div>","<input type='submit' value='".fun_adm_lang(230)."'>"," <span id='noindex' title='".fun_adm_lang(255)."'></span>","<script type='text/javascript'>\n","var indexColumns = ";$e=array();foreach($v as$u){if($u["type"]!="FULLTEXT"){$e[reset($u["columns"])]=1;}}$e[""]=1;foreach($e as$z=>$X){fun_adm_json_row($z);}echo";\n","selectFieldChange(document.getElementById('form'));\n","</script>\n","</div></fieldset>\n";}public function selectCommandPrint(){return!fun_adm_information_schema(ADM_DB);}public function selectImportPrint(){return!fun_adm_information_schema(ADM_DB);}public function selectEmailPrint($qc,$e){}public function selectColumnsProcess($e,$v){global$od,$ud;$M=array();$sd=array();foreach((array)$_GET["columns"]as$z=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$od)||in_array($X["fun"],$ud)))){$M[$z]=fun_adm_apply_sql_function($X["fun"],($X["col"]!=""?fun_adm_idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$ud)){$sd[]=$M[$z];}}}return array($M,$sd);}public function selectSearchProcess($n,$v){global$f,$dc;$J=array();foreach($v as$r=>$u){if($u["type"]=="FULLTEXT"&&$_GET["fulltext"][$r]!=""){$J[]="MATCH (".implode(", ",array_map('fun_adm_idf_escape',$u["columns"])).") AGAINST (".fun_adm_q($_GET["fulltext"][$r]).(isset($_GET["boolean"][$r])?" IN BOOLEAN MODE":"").")";}}foreach((array)$_GET["where"]as$z=>$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$rg="";$tb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Ed=fun_adm_process_length($X["val"]);$tb.=" ".($Ed!=""?$Ed:"(NULL)");}elseif($X["op"]=="SQL"){$tb=" $X[val]";}elseif($X["op"]=="LIKE %%"){$tb=" LIKE ".$this->processInput($n[$X["col"]],"%$X[val]%");}elseif($X["op"]=="ILIKE %%"){$tb=" ILIKE ".$this->processInput($n[$X["col"]],"%$X[val]%");}elseif($X["op"]=="FIND_IN_SET"){$rg="$X[op](".q($X["val"]).", ";$tb=")";}elseif(!preg_match('~NULL$~',$X["op"])){$tb.=" ".$this->processInput($n[$X["col"]],$X["val"]);}if($X["col"]!=""){$J[]=$rg.$dc->convertSearch(fun_adm_idf_escape($X["col"]),$X,$n[$X["col"]]).$tb;}else{$mb=array();foreach($n as$E=>$m){if((is_numeric($X["val"])||!preg_match('~'.fun_adm_number_type().'|bit~',$m["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$m["type"]))){$mb[]=$rg.$dc->convertSearch(fun_adm_idf_escape($E),$X,$m).$tb;}}$J[]=($mb?"(".implode(" OR ",$mb).")":"1 = 0");}}}return$J;}public function selectOrderProcess($n,$v){$J=array();foreach((array)$_GET['order']as$z=>$X){if($X!=''){$J[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:fun_adm_idf_escape($X)).(isset($_GET["desc"][$z])?' DESC':'');}}if(!$J){if($v['PRIMARY']['columns']){$J[]='`'.$v['PRIMARY']['columns'][0].'` DESC';}}return$J;}public function selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}public function selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}public function selectEmailProcess($Z,$gd){return false;}public function selectQueryBuild($M,$Z,$sd,$Nf,$_,$G){return'';}public function messageQuery($H,$Ci){global$x;$zd=fun_adm_get_session('queries','array');$k=$_GET["db"];$s="sql-".fun_adm_count($zd[$k]);if(strlen($H)>1e6){$H=preg_replace('~[\x80-\xFF]+$~','',substr($H,0,1e6))."\n...";}$zd[$k][]=array($H,time(),$Ci);fun_adm_set_session('queries',$zd);return" <span class='time'>".@date("H:i:s")."</span> <a href='#$s' onclick=\"return !toggle('$s');\">".fun_adm_lang(51)."</a>"."<div id='$s' class='hidden'><pre><code class='jush-$x'>".fun_adm_shorten_utf8($H,1000).'</code></pre>'.($Ci?" <span class='time'>($Ci)</span>":'').(fun_adm_support("sql")?'<p><a href="'.fun_adm_h(str_replace("db=".urlencode(ADM_DB),"db=".urlencode($k),ADM_ME).'sql=&history='.(fun_adm_count($zd[$k])-1)).'">'.fun_adm_lang(48).'</a>':'').'</div>';}public function editFunctions($m){global$mc;$J=($m["null"]?"NULL/":"");foreach($mc as$z=>$od){if(!$z||(!isset($_GET["call"])&&(isset($_GET["select"])||fun_adm_where($_GET)))){foreach($od as$kg=>$X){if(!$kg||preg_match("~$kg~",$m["type"])){$J.="/$X";}}if($z&&!preg_match('~set|blob|bytea|raw|file~',$m["type"])){$J.="/SQL";}}}if($m["auto_increment"]&&!isset($_GET["select"])&&!fun_adm_where($_GET)){$J=fun_adm_lang(21);}return explode("/",$J);}public function editInput($Q,$m,$Ga,$Y){if($m["type"]=="enum"){return(isset($_GET["select"])?"<label><input type='radio'$Ga value='-1' checked><i>".fun_adm_lang(221)."</i></label> ":"").($m["null"]?"<label><input type='radio'$Ga value=''".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").fun_adm_enum_input("radio",$Ga,$m,$Y,0);}return"";}function editHint($Q,$m,$Y){return'';}public function processInput($m,$Y,$q=""){if($q=="SQL"){return$Y;}$E=$m["field"];$J=fun_adm_q($Y);if(preg_match('~^(now|getdate|uuid)$~',$q)){$J="$q()";}elseif(preg_match('~^current_(date|timestamp)$~',$q)){$J=$q;}elseif(preg_match('~^([+-]|\|\|)$~',$q)){$J=fun_adm_idf_escape($E)." $q $J";}elseif(preg_match('~^[+-] interval$~',$q)){$J=fun_adm_idf_escape($E)." $q ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$J);}elseif(preg_match('~^(addtime|subtime|concat)$~',$q)){$J="$q(".fun_adm_idf_escape($E).", $J)";}elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$q)){$J="$q($J)";}return fun_adm_unconvert_field($m,$J);}public function dumpOutput(){$J=array('text'=>fun_adm_lang(192),'file'=>fun_adm_lang(256));if(function_exists('gzencode')){$J['gz']='gzip';}return$J;}public function dumpFormat(){return array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}public function dumpDatabase($k){}public function dumpTable($Q,$bi,$Xd=0){if($_POST['format']!='sql'){echo"\xef\xbb\xbf";if($bi){fun_adm_dump_csv(array_keys(fun_adm_fields($Q)));}}else{if($Xd==2){$n=array();foreach(fun_adm_fields($Q)as$E=>$m){$n[]=fun_adm_idf_escape($E)." $m[full_type]";}$h="CREATE TABLE ".fun_adm_table($Q)." (".implode(", ",$n).")";}else{$h=fun_adm_create_sql($Q,$_POST['auto_increment']);}if($h){if($bi=="DROP+CREATE"||$Xd==1){echo"DROP ".($Xd==2?"VIEW":"TABLE")." IF EXISTS ".fun_adm_table($Q).";\n";}if($Xd==1){$h=fun_adm_remove_definer($h);}echo"$h;\n\n";}}}public function dumpData($Q,$bi,$H){global$f,$x;$Oe=($x=="sqlite"?0:1048576);if($bi){if($_POST["format"]=="sql"){if($bi=="TRUNCATE+INSERT"){echo fun_adm_truncate_sql($Q).";\n";}$n=fun_adm_fields($Q);}$I=$f->query($H,1);if($I){$Pd="";$Ua="";$fe=array();$di="";$Rc=($Q!=''?'fetch_assoc':'fetch_row');while($K=$I->$Rc()){if(!$fe){$_j=array();foreach($K as$X){$m=$I->fetch_field();$fe[]=$m->name;$z=fun_adm_idf_escape($m->name);$_j[]="$z = VALUES($z)";}$di=($bi=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$_j):"").";\n";}if($_POST["format"]!="sql"){if($bi=="table"){fun_adm_dump_csv($fe);$bi="INSERT";}fun_adm_dump_csv($K);}else{if(!$Pd){$Pd="INSERT INTO ".fun_adm_table($Q)." (".implode(',',array_map('fun_adm_idf_escape',$fe)).") VALUES";}foreach($K as$z=>$X){$m=$n[$z];$K[$z]=($X!==null?fun_adm_unconvert_field($m,preg_match('~'.fun_adm_number_type().'~',$m['type'])&&$X!=''?$X:fun_adm_q($X)):"NULL");}$kh=($Oe?"\n":'').'('.implode(',',$K).')';if(!$Ua){$Ua=$Pd.$kh;}elseif(strlen($Ua)+4+strlen($kh)+strlen($di)<$Oe){$Ua.=",$kh";}else{echo$Ua.$di;$Ua=$Pd.$kh;}}}if($Ua){echo$Ua.$di;}}elseif($_POST["format"]=='sql'){echo'-- '.str_replace("\n",'',$f->error)."\n";}}}public function dumpFilename($Cd){$F=fun_adm_object();return fun_adm_friendly_url($Cd!=""?$Cd:($F->conf_dbhost!=''?$F->conf_dbhost:'localhost'));}public function dumpHeaders($Cd,$df=false){$Xf=$_POST["output"];if($Xf!=='text'){$Jc=(preg_match('~sql~',$_POST["format"])?"sql":($df?"tar":"csv"));header('Cache-Control: public');header('Content-Transfer-Encoding: binary');header('Accept-Ranges: bytes');header("Content-Type: ".($Xf=="gz"?"application/x-gzip":($Jc=="tar"?"application/x-tar":($Jc=="sql"||$Xf!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Xf=="gz"){ob_start('fun_adm_ob_gzencode',1e6);}}else{header("Content-Type:text/plain; charset=utf-8");$Jc='sql';}return$Jc;}public function homepage($U='db'){$A=array();if($U==='db'){parse_str(strtolower($_SERVER['QUERY_STRING']),$Kj);$A=array('index'=>fun_adm_lang(44).fun_adm_lang(17),'database'=>fun_adm_lang(103),'schema'=>fun_adm_lang(35),'privileges'=>fun_adm_lang(46),'create'=>fun_adm_lang(81),);}else if($U==='def'){if(ADM_DB!==''){$this->homepage();return true;}parse_str(strtolower($_SERVER['QUERY_STRING']),$Kj);$A=array('index'=>fun_adm_lang(257).fun_adm_lang(10),'database'=>fun_adm_lang(258),'privileges'=>fun_adm_lang(46),'processlist'=>fun_adm_lang(162),'variables'=>fun_adm_lang(184),'status'=>fun_adm_lang(23),);}if($A){$A['sql']=fun_adm_lang(247);$A['import']=fun_adm_lang(50);$A['dump']=fun_adm_lang(37);}$i='';$Zd=false;foreach($A AS$z=>$X){if(fun_adm_support($z)){$z==='index'&&$z='';$ka=' ';if(isset($Kj[$z])){$ka=' class="meun_a_focus" ';$Zd=true;}if($z){$z="$z=";}else{$ka=' class="meun_a_index" ';}$i.="<a{$ka}href='".fun_adm_h(ADM_ME)."$z'>$X</a>\n";}}if(!$Zd){$i=strtr($i,array('meun_a_index'=>'meun_a_focus'));}echo"<p class='links'>{$i}</p>";return true;}public function navigation($af){global$ia,$x,$f;echo'<h1>
    ',$this->name(),' <span class="version">',$ia,'</span>
</h1>
';if($af==='auth'){return true;}$S='';if(!$af&&ADM_DB){$f->select_db(ADM_DB);$S=fun_adm_table_status('',false);}if(fun_adm_support('sql')){echo'<script type="text/javascript" src="',fun_adm_incl('jush.js'),'"></script>
<script type="text/javascript">
';if($S){$_e=array();foreach($S as$Q=>$U){$_e[]=preg_quote($Q,'/');}echo"var jushLinks = { $x: [ '".fun_adm_js_escape(ADM_ME).(fun_adm_support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$_e).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X){echo"jushLinks.$X = jushLinks.$x;\n";}}echo'bodyLoad(\'',(is_object($f)?substr($f->server_info,0,3):""),'\');
</script>
';}$pf=isset($_GET['select'])?$_GET['select']:'';$qf=isset($_GET['table'])?$_GET['table']:'';echo"<p class='links'>";if(fun_adm_support("sql")){echo"<a href='".str_replace('&sql=','',ADM_ME)."sql='".fun_adm_bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".fun_adm_lang(247)."</a>";}if(fun_adm_support("import")){echo"<a href='".fun_adm_h(ADM_ME)."import='".fun_adm_bold(isset($_GET["import"])).">".fun_adm_lang(50)."</a>";}if(fun_adm_support("dump")){echo"<a href='".fun_adm_h(ADM_ME)."dump=".urlencode($qf?$qf:$pf)."' id='dump'".fun_adm_bold(isset($_GET["dump"])).">".fun_adm_lang(37)."</a>";}echo'</p>';$af=array();$this->databasesPrint($af,$j);if(!$af&&ADM_DB){if(!$S){echo"<p class='message'>".fun_adm_lang(76)."\n";}else{$this->tablesPrint($S);}}if(!$S&&ADM_DB==''){echo'<p id="databases">';foreach($j AS$z=>$X){$Mb='';if(in_array(strtolower($X),array('mysql','template0','template1','information_schema','sys','performance_schema'))){$Mb=' style="font-weight: bolder;color:#FF8040" title="Do not operate the system database"';}echo'<a'.$Mb.' href="'.fun_adm_h(ADM_ME).'db='.fun_adm_h($X).'">'.fun_adm_h($X).'</a>'."\n";}echo'</p>';}}public function databasesPrint($af,&$j){global$b,$f,$T;$j=$this->databases();$me=fun_adm_lang(257);echo'<form enctype="application/x-www-form-urlencoded" method="post" action=""><p id="dbs">';$Jb=" onmousedown='dbMouseDown(event, this);' onchange='dbChange(this);'";echo"<select title=\"{$me}\" name='db'$Jb>".fun_adm_optionlist(array(''=>fun_adm_lang(259))+$j,ADM_DB)."</select>","<input type='submit' value='".fun_adm_lang(214)."'".($j?" class='hidden'":"").">\n";if($af!="db"&&ADM_DB!=""&&$f->select_db(ADM_DB)){if(fun_adm_support("scheme")){$me=fun_adm_lang(14);echo"<br><select title=\"{$me}\" name='ns'{$Jb}>".fun_adm_optionlist(array('public'=>fun_adm_lang(230).$me.fun_adm_lang(10))+$b->schemas(),$_GET['ns'])."</select>";if($_GET['ns']){fun_adm_set_schema($_GET['ns']);}}}echo(isset($_GET["sql"])?'<input type="hidden" name="sql" value="">':(isset($_GET["schema"])?'<input type="hidden" name="schema" value="">':(isset($_GET["dump"])?'<input type="hidden" name="dump" value="">':(isset($_GET["privileges"])?'<input type="hidden" name="privileges" value="">':"")))),"<input type='hidden' value='".$T."' name=\"token\">\n","</p></form>\n";}public function tablesPrint($S){echo"<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";foreach($S as$Q=>$O){$E=$this->tableName($O);$wh=fun_adm_get_session('sel_table');$qe='none';if(urldecode($wh)===$Q){$qe='focus';}if($O['Collation']){$Gi="Rows: {$O['Rows']}\nEngine: {$O['Engine']}\nUpdate_time: {$O['Update_time']}\nCollation: {$O['Collation']}";}else{$Gi="Rows: {$O['Rows']}\n".fun_adm_lang(173).fun_adm_lang(174);}$Ne=$O['Rows'];if($O['Rows']>999){$Ne='99+';}if(is_numeric($O['Rows'])&&$_GET['select']!==$E){$O['Rows']="[{$Ne}]";}else{$O['Rows']='';}echo(fun_adm_support("table")||fun_adm_support("indexes")?'<a class="sel_'.$qe.'" href="'.fun_adm_h(ADM_ME).'select='.urlencode($Q).'"'.fun_adm_bold(in_array($Q,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"])),(fun_adm_is_view($O)?"view":""),"structure")." title='".$Gi."'>$E{$O['Rows']}</a>":"<span>$E ({$Ne})</span>")."<br>\n";}}}class Cls_Adm_TmpFile{public$handler;public$size;public function __construct(){clearstatcache();$this->handler=tmpfile();}public function write($wb){$this->size+=strlen($wb);fwrite($this->handler,$wb);}public function send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}if(ADM_IS_LOCAL&&!ADM_ISAPI){$qa=new Qadmin();$qa->run();}function fun_adm_object($Ai=''){static$F=null;if($Ai==='clear'){$F=null;return$F;}if($F!==null){return$F;}$F=$Ai;}function fun_adm_error_handler($zc=0,$Ac=0,$xc=0,$yc=0,$wc=0){static$l=array();$pe=false;if(!$zc&&!$yc){set_exception_handler('fun_adm_error_handler');set_error_handler('fun_adm_error_handler',E_ALL);register_shutdown_function('fun_adm_error_handler','_shutdown_');return true;}else if(is_object($zc)){$lc['type']=get_class($zc).'['.$zc->getCode().']';$lc['message']=$zc->getMessage();$lc['file']=$zc->getFile();$lc['line']=$zc->getLine();$lc['handler']='set_exception_handler';}else if($zc==='_shutdown_'){$lc=error_get_last();$pe=true;if($lc){$lc['handler']='register_shutdown';}}else{$lc=array();$lc['type']=$zc;$lc['message']=$Ac;$lc['file']=$xc;$lc['line']=$yc;$lc['handler']='set_error_handler';}if(stripos(trim($lc['message']),'undefined index')===0||stripos(trim($lc['message']),'undefined offset')===0||stripos(trim($lc['message']),'undefined variable')===0){$lc=array();}if($lc){$l[]=$lc;}if($pe){fun_adm_showmsg($l);}return true;}function fun_adm_showmsg($l){$F=fun_adm_object();if($F->conf_callback_func&&function_exists($F->conf_callback_func)){$F->data_error=$l;$F->data_session=$_SESSION;$Tb=get_defined_constants(true);$F->data_constant=$Tb['user'];$Tb=get_defined_functions();foreach($Tb['user']AS$y=>$X){if(stripos($X,'fun_adm_')!==0){unset($Tb['user'][$y]);}}$F->data_func=array_values($Tb['user']);$F->data_get=$_GET;$F->data_post=$_POST;call_user_func_array($F->conf_callback_func,array('qadmin'=>$F));}session_write_close();restore_error_handler();$be=ADM_IS_ONCE;$gb=200;if(!fun_adm_constant('ADM_DEBUG')&&function_exists('http_response_code')){$gb=http_response_code();}if(!$l){if(defined('ADM_RUN')){header('Q_adminfo:'.sprintf('%d|%d|%d|%d|%d|%d|%s',fun_adm_constant('ADM_ISAPI'),$be,fun_adm_constant('ADM_IS_LOCAL'),fun_adm_constant('ADM_DEBUG'),fun_adm_constant('ADM_API_LOGOUT'),$gb,date_default_timezone_get()));}return true;}$_g=(isset($_SERVER['SERVER_PROTOCOL'])?$_SERVER['SERVER_PROTOCOL']:'HTTP/1.0');if($gb>=303||!$be||fun_adm_constant('ADM_DEBUG')||fun_adm_constant('ADM_IS_LOCAL')){$Tc=array();foreach($l AS$y=>$W){$Tc[$W['file']][$W['line']]=$W['line'];}$ye=0;foreach($Tc AS$y=>&$W){$ld=fopen($y,'rb');$r=1;$ye=max($Tc[$y]);while(!feof($ld)){$xe=ltrim(fgets($ld));if($r==$Tc[$y][$r]){$W[$r]=trim($xe);}$r++;if($r>$ye){break;}}fclose($ld);clearstatcache();}foreach($l AS$y=>&$W){if(isset($Tc[$W['file']][$W['line']])){$W['linecode']=$Tc[$W['file']][$W['line']];}else{$W['linecode']='';}}if($be){ob_end_clean();}header($_g.' 200 OK');header('Content-Type: text/html; charset=utf-8');header('Cache-Control: no-cache');header('X-Powered-By: Qadmin '.fun_adm_constant('ADM_VERSION').' TimeZone'.date_default_timezone_get());echo'<!DOCTYPE HTML><html><head><meta charset="utf-8" /><title>Qadmin Exception Information</title></head><body>','<div style="font-size:13px" id="msg_debug">','<h3>['.$gb.']ErrorInfo N('.fun_adm_count($l).')</h3>';foreach($l AS$z=>$X){$yd=' -- ';if($X['linecode']){$yd=highlight_string('<?php '.$X['linecode'],true);$yd=strtr($yd,array('&lt;?php&nbsp;'=>''));}echo'<p style="border-left: 10px solid #FF8040;line-height: 22px; padding-left: 8px;">Type: '.fun_adm_FriendlyErrorType($X['type']).' ('.$X['handler'].")<br />\n",'Mess: <span style="color:red">'.htmlspecialchars($X['message'])."</span><br />\n",'Line: '.htmlspecialchars($X['file']).'('.$X['line'].')'."<br />\n",'Code: '.$yd."<br />\n","</p>\n<br /><hr />";}echo'<a href="'.fun_adm_constant('ADM_THIS_URL').'">Refresh</a> - <a href="'.ADM_SITEURLGO.'/qadmin">Qadmin '.fun_adm_constant('ADM_VERSION').'</a> - '.date('Y-m-d H:i:s').'-'.date_default_timezone_get().'</div>
       </body></html>';}else{$i='';foreach($l as$z=>$X){$X['message'].=nl2br($X['message']);$i.=date('H:i:s').'['.htmlspecialchars($X['file']).'('.$X['line'].') :'.htmlspecialchars($X['message']).']';};if(!$i){$i=$_g.' '.$gb;}header('Qadminfo:'.$i);}}function fun_adm_FriendlyErrorType($U){$Jd=array();$Jd[E_ERROR]='E_ERROR[1]';$Jd[E_WARNING]='E_WARNING[2]';$Jd[E_PARSE]='E_PARSE[4]';$Jd[E_NOTICE]='E_NOTICE[8]';$Jd[E_CORE_ERROR]='E_CORE_ERROR[16]';$Jd[E_CORE_WARNING]='E_CORE_WARNING[32]';$Jd[E_CORE_ERROR]='E_COMPILE_ERROR[64]';$Jd[E_CORE_WARNING]='E_COMPILE_WARNING[128]';$Jd[E_USER_ERROR]='E_USER_ERROR[256]';$Jd[E_USER_WARNING]='E_USER_WARNING[512]';$Jd[E_USER_NOTICE]='E_USER_NOTICE[1024]';$Jd[E_STRICT]='E_STRICT[2048]';$Jd[E_RECOVERABLE_ERROR]='E_RECOVERABLE_ERROR[4096]';$Jd[E_DEPRECATED]='E_DEPRECATED[8192]';$Jd[E_USER_DEPRECATED]='E_USER_DEPRECATED[16384]';if($Jd[$U]){return$Jd[$U];}else{return$U;}}function fun_adm_constant($sb){if(defined($sb)){return constant($sb);}return'';}